从子组件设置父状态

Posted

技术标签:

【中文标题】从子组件设置父状态【英文标题】:Setting Parent State from Children Component 【发布时间】:2021-03-14 01:55:49 【问题描述】:

我有一个父组件和一个子组件。

子组件基本上是一个导航栏。而 Parent 呈现导航栏。

我想在点击子组件时更改父状态。

父构造函数

   constructor(props) 
      super(props); // Must call
      this.state = show: "login", user: "guest";


 render() 
 contents = <><Menu/><Activities /></>;
      return (
      contents
      );





子组件

  constructor(props) 
      super(props); // Must call
      // a member variable called "state" to hold the state as a JS object
      this.state = show: "login", user: "guest",
      ;
 render() 
 contents =  contents = <ul>
            <li><a >Home</a></li>
            <li><a >Activities</a></li>
            <li><a >Membership</a></li>
            </ul>;

      return (
      contents
      );

【问题讨论】:

您需要将父组件的setState 传递给子组件。 这能回答你的问题吗? react js set state from parent to child component 【参考方案1】:

和 React 一样,the Data Flows Down,子组件改变其父组件的状态,只能通过回调传递给父组件来完成。

您可以通过props、Context API 或使用任何状态管理库来传递回调。

例如:

class App extends Component 
  state =  show: "login", user: "guest" ;

  render() 
    return (
      <>
        <Menu />
        <Activities onClick=this.setState />
      </>
    );
  


class App extends Component 
  state =  show: "login", user: "guest" ;

  render() 
    return (
      <ul>
        <li onClick=() => this.props.onClick( show: "Home" )>
          <a>Home</a>
        </li>
        <li onClick=() => this.props.onClick( show: "Activities" )>
          <a>Activities</a>
        </li>
      </ul>
    );
  

【讨论】:

以上是关于从子组件设置父状态的主要内容,如果未能解决你的问题,请参考以下文章

在 React Native 中将状态从子组件传递到父组件

即使从父组件传递函数后也无法从子组件更改状态

将对象从子状态传递给父状态

我可以使用react中的useEffect挂钩从子级设置父级的状态

如何在反应中将最新状态从子组件传递给父组件

在 React Native 中从子组件 TextInput 更新父组件状态