reactjs - 在 react 中从父组件访问子组件的子状态

标签 reactjs

我要访问<Child2>来自父组件的状态。

<Parent>
   <Child1>
      <Child2>
   </Child1>
</Parent>

如何实现?

最佳答案

你根本不应该这样做。在 react 中,信息应该始终从上到下流动。这样做的 react 方式是 lift state up to the parent并将值作为 Prop 向下传递。在您的 child 中,您有回调,这些回调也作为 child 调用的 Prop 传递,当值发生变化时(例如通过用户交互),以便父级可以更新其状态:

const Child = ({ value, onChange }) => (
  <Fragment>
    <p>{value || "no value"}</p>
    <button onClick={() => onChange('changed')} >Set value</button>
  </Fragment>
);

class Parent extends Component {
  state = {
    value: null
  };

  handleChange = value => this.setState({value})

  render() {
    return <Child value={this.state.value} onChange={this.handleChange} />;
  }
}

Working example on codesandbox

这可以无限深嵌套来完成。在一个更大的应用程序中,您的状态需要在遍布整个组件树的多个组件中使用,您可能会达到获得 PITA 的地步。克服这个问题的常用方法是使用像 redux 这样的全局存储。提供。

关于reactjs - 在 react 中从父组件访问子组件的子状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49558824/

相关文章:

reactjs - 如何在 JSX 内使用 switch case : ReactJS

javascript - 如何在React Native中设置时间格式

reactjs - TypeScript 条件类型 : Extract component props type from react component

css - 如何将普通的嵌套CSS更改为样式组件?

javascript - 如何使用 Jest + Enzyme 测试 React 组件的样式?

reactjs - MUI 组选择 - 数组的数组

javascript - jQuery 未定义,Electron

javascript - 在 reactJS 中验证复选框的简单函数

javascript - setState 仅在使用对象作为状态时设置最后输入

javascript - React - 在 Map 函数中添加组件不添加