xoo*_*mer 1 javascript layout state prop reactjs
我有一个快速的问题。如何将状态传递给孩子的孩子?
如果父级有某种状态,那么在 ES6 中将这种状态传递给直接子级而不是直接子级的子级的最佳方式是什么。
我附上了布局的图像。
主应用程序 - 是由标题、侧边栏、内容区域组成的主要组件。
侧边栏由 - 侧边栏项目组成。
内容区包括 - 内容项。
主要问题
如何通过单击侧边栏项目更新内容区域中的组件?
请注意,此布局有 6 个组件(App、Header、Sidebar、Content Area、Sidebar Item、Content Item)。
图片
您可以执行此操作的唯一 React 方法是将 state 和 props 从父级直接传递给子级。如果孙子需要祖父母的状态或道具,父母必须不断向下传递它,直到它到达孙子。React 是单向的;仅从父母到孩子。
因此,在您的情况下,祖父级(主应用程序)将包含一些将传递给子级(侧边栏和内容区域)的状态。例如,从父组件中,您可以像这样将状态传递给子组件:
<Sidebar someState={this.state.someParentState} />
<ContentArea someState={this.state.someParentState} />
Run Code Online (Sandbox Code Playgroud)
当侧边栏中的状态发生变化(在您的示例中,单击)时,它将反映在祖父级(主应用程序)上。由于此相同状态在多个组件(内容区域)之间共享,因此将更新具有此状态的每个组件。
现在,如果您在想,“哇,如果有多个孩子,并且有孩子的孩子,这会不会变得一团糟?”。答案是:“是的,可以!” 这就是状态容器(Redux、Flux、MobX)的用武之地。这就是为什么要使用状态容器的原因:
connectandmapStateToProps函数将 state 的一部分作为 props 连接到单个组件即可。考虑 Redux(最流行的状态容器)的以下资源: