javascript - 跨并行组件 react 传递状态

标签 javascript reactjs

我有两个相同级别的组件(没有所有者-所有者关系)。假设在组件A中点击“C”,我将温度单位设置为“C”,点击“F”,我将单位设置为“F”。在组件B中,我需要显示温度,所以我需要获取单位。但该信息在 A 中。我想知道如何访问组件 A 中的状态?

跟进:

在另一个与 A 和 B 并行的组件 C 中,我有一个指向另一个页面的链接:

<div className="bottom_link">
     <Link to={'weather-stations/eaB1rJytnpS5mZ2m'}>view detail</Link>
</div>

我还需要将单位信息传递到该页面。我想知道推荐的方法是什么?谢谢。

最佳答案

让组件 X 拥有所有组件 A、B 和 C,并将状态移到那里。在传递给子组件的组件 X 中有一个处理程序,该处理程序将在 X 上执行 setState

另一种方法是使用 Flux 方法。在这里,您将使用一个商店并让每个组件从该共享商店的状态中读取。从 F 到 C 和返回的更改将通过 action creator 和 store handler 完成。

第二种方法是第一种方法的外推:您本质上是通过存储将状态“提升”到全局范围,而您是通过使用 X 的状态将其提升到 X 的范围。

通常在 React 中,您希望您的组件尽可能无状态。因此我建议使用第一种方法。然后,如果有必要,您可以将状态提升得更高(比如 X、Y 和 Z 需要共享状态),并且 A、B 和 C 保持不变。

使用 props 而不是 state 有一个很好的副作用,那就是迫使您考虑组件的 API。这个组件究竟需要什么数据来完成它的工作?然后将这些要求作为 props 传递。

如果我要给开始使用 React 的人任何一条建议,那就是尽可能不要使用状态。即使您认为需要它,您也可以经常将其删除,因此您应该尽可能努力避免状态。

我正在开发一个包含成百上千个组件的应用,我几乎想不出我们使用 this.setState 的地方

关于javascript - 跨并行组件 react 传递状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34275327/

相关文章:

reactjs - 在没有主题的情况下 react KeyboardDatePicker 样式

javascript - 为什么数据不会从一个组件传递到下一个组件?

javascript - ReactJs:获取无法读取未定义的属性 'setState' 错误

javascript - 为元素设置属性

javascript - 如何隐藏 HTML5 音频控件?

javascript - axios 无法访问错误消息

javascript - 如何根据 JavaScript 中的系统范围主题将 props 发送到变量?

ios - react native : storage only works in simulator

javascript - javascript 可以按 "style"值过滤已过滤的 <li> 标签列表吗?

javascript - JQuery - 将光标放在文本区域的末尾