reactjs - 将全局值传递给子组件

标签 reactjs

我正在尝试确定将全局值传递给子组件的最佳方法。我之前将最高级别 parent 的引用传递给每个 child (大约 3-4 层深)。但我并不热衷于这种方法。我的假设是,每当根值发生变化时,React 就会比较这些值并计算它们不必要的任何变化。

我能想到的唯一其他解决方案是将值存储在窗口属性的命名空间中,即。 window.myapp.settings = {} 这会将其从 props 中删除,因此不会影响应用程序的整体性能。

最佳答案

React 不会观察对象的变化,也没有必要这样做。当您调用setState时,您实际上是在要求 React 更改组件的状态并重新渲染它。 setState将更新该子树而不是整个应用程序。

删除一两个键对 React 或一般的 JS 影响为零。如果您不知道,<MyComp a="h" b="e" />脱糖至MyComp({a: 'h', b: 'e'}) .

如果您只是为了性能而尝试传递全局对象,那么请不要打扰;你不会在那里节省毫秒。但是,是的,您可以让您的组件尽可能无状态地保留在树中,这是一种良好的做法。

关于reactjs - 将全局值传递给子组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23090736/

相关文章:

reactjs - "getInitialProps"页面结果 "/[slug]"中的循环结构

javascript - 在 react 中搜索关键字列表

reactjs - 如何在包含大量数据的 react 表列中创建新行

javascript - 如何判断哪个 Card 或 SelectField 正在更改

reactjs - react 快照 : addComponentAsRefTo(. ..) 错误

ReactJS 动态模板(例如用于 A/B 测试 Web 应用程序)

javascript - React-query 返回无法读取未定义的属性,即使我可以看到 id 已设置

javascript - 如何在 ReactJs 中对数组数据进行排序

node.js - 向客户端发送 cookie,但 Express 不起作用

reactjs - react-hook-form material-ui 下拉字段缺少 `name` 属性 :