📜  如何在 React 中访问孩子的状态?

📅  最后修改于: 2022-05-13 01:56:51.203000             🧑  作者: Mango

如何在 React 中访问孩子的状态?

在 React 中,我们可以使用 Refs 访问孩子的状态。我们将在父组件中为子组件分配一个 Refs。然后使用 Refs 我们可以访问孩子的状态。

创建 Refs Refs 使用 React.createRef() 创建并通过 ref 属性附加到 React 元素。

class App extends React.Component {
constructor(props) {
 super(props);
 //creating ref
 this.childRef= React.createRef();
}
render() {
 return (
 //assigning the ref to child component
 
 )
}
}

访问 Refs当我们将 ref 分配给渲染中的元素或子组件时,我们可以使用 ref 的 current 属性访问该元素。

const element = this.myRef.current;

同样,我们可以使用父组件的 element.state.state_name 访问状态。

创建一个反应应用程序并将App.js文件编辑为:

文件路径-src/App.js

Javascript
import React from "react";
import Child from './Child'
  
class App extends React.Component {
  constructor(props) {
    super(props);
    this.ChildElement = React.createRef();
  }
  handleClick = () => {
    const childelement = this.ChildElement.current;
      alert("current state of child is :  "+ childelement.state.name);
    childelement.changeName("Aakash");
      
      
  };
  render() {
    return (
      
                        
    );   } } export default App


Javascript
import React from 'react'
class Child extends React.Component {
  state = {
    name: "Batman"
  };
  changeName = (newname ) => {
    this.setState({
      name:newname
    });
  };
  render() {
    return 
{this.state.name}
;   } } export default Child


在 src 文件夹中创建一个新的Child.js组件并进行如下编辑:

文件路径-src/Child.js:

Javascript

import React from 'react'
class Child extends React.Component {
  state = {
    name: "Batman"
  };
  changeName = (newname ) => {
    this.setState({
      name:newname
    });
  };
  render() {
    return 
{this.state.name}
;   } } export default Child

输出: