【发布时间】:2017-05-30 14:12:11
【问题描述】:
我对 React.js 组件之间的通信有一些疑问。这是在不使用 redux 的情况下。这是我的组件层次结构的样子。
App
/ \
/ \
| |
▼ ▼
Board Dashboard
|
▼
Cell
以下是我用于组件通信的一些假设/模式。
-
如果我们需要将消息从父组件传递给子组件 我们使用道具来做到这一点的组件。例如,在创建一个 板我们传递行,列作为道具。
<Board rows={5} cols={5} /> -
如果我们需要将消息从子组件传递给父组件 我们通过传递回调来完成组件。例如我们通过一个 从 Board 到 Cell 的 play() 回调。在 Cell 中,我们设置 onClick 处理程序作为传递的回调,即 play()。
<Cell onClick={this.props.play(this.props.id)} /> -
我有一个悬而未决的问题是如何在兄弟姐妹之间传递消息 组件(例如仪表板到单元格)。一个用例是重置我的 仪表板组件中的重置按钮时的板组件 点击。这是仪表板中的重置按钮的外观。我的 问题是一旦重置消息到达 App 组件,什么是 将其传递给董事会的最佳做法?
<input type="button" value="reset" onClick={this.props.reset} />
如果能获得关于 1 和 2 的一些反馈,那就太好了。另外,3 的最佳做法。
【问题讨论】:
-
1 & 2 是处理该用例的正确方法。至于 3,如果组件是兄弟,您可以使用来自父级的回调(请参阅andrewhfarmer.com/component-communication/#5-parent-component)如果它们不是兄弟,则有一个很好的迹象,您应该将变量移动到由 redux 或其他类似管理的共享状态状态管理者。
-
@GiacomoCosimato 我真的很喜欢那个链接。谢谢...
标签: javascript reactjs