【发布时间】:2021-04-22 20:54:34
【问题描述】:
我正在根据用户输入按需加载一些反应组件(以及其他信息)。
要渲染的组件保存在一个数组中,渲染方法使用array.map 来包含组件。
问题是,如果我触发主应用组件的forceUpdate(),映射的组件将不会更新。
代码示例:https://codesandbox.io/s/react-components-map-from-array-ekfb7
【问题讨论】:
-
forceUpdate不是你应该使用的东西,除非是非常特殊的情况。几乎可以肯定,这表明其他设置不正确。 -
在状态中存储组件实例也是一种反模式。而是将标识符存储在状态中,并在您的
map回调中创建实例。 -
它是使用
i18n-react进行本地化的更大项目的一部分。如果用户更改语言,我会在应用根组件外触发forceUpdate以更新所有翻译。 -
只存储标识符会使整个回调更加复杂,因为要映射的组件将是不同的组件,并且可能需要额外的参数。但我会记住这一点。
-
它不必是单个标识符,这通常就是您所需要的。如果您需要有关每个新组件的一组复杂信息,只需存储一个对象即可。我将在我的答案中添加一个示例。
标签: javascript arrays reactjs react-component