【问题标题】:React props not updating反应道具不更新
【发布时间】:2018-02-26 06:58:48
【问题描述】:

我有一个父类组件,它在componentWillMount 中有一个函数,它循环遍历字符串列表并为每个字符串创建一个元素,最后在this.state.map 上创建setState。每个子元素都会收到一个 prop,它是父元素中的一个状态,称为 this.state[element]。

我将这些元素放入this.state.map 的原因是因为我可以更改(某些)上层组件中的内容而不必每次都重新渲染数组(这非常慢)而且我不想使用@ 987654326@。另外,将来我可以通过切换不同的地图状态来快速更改元素。

问题是,当父 this.state[element](在初始 componentWillMount 中作为道具传递给孩子)发生变化时,它不会更新孩子的道具。父状态确实发生了变化。

这是一种合法的方式吗? 很抱歉我没有提供代码示例。现在真是一团糟。

【问题讨论】:

    标签: javascript reactjs


    【解决方案1】:

    只有 ReactDOM.render(和服务器端渲染等)、setState 或 forceUpdate 会导致您的孩子重新渲染。如果你只是改变状态对象,React 不会意识到这一点,也不会重新渲染。无论如何,不​​通过 setState 改变状态是无效的,你应该尽量保持你的状态不可变。为了让您看到孩子的变化,您需要使用setState更新this.state[element]。

    来自 React 文档:

    注意事项: 永远不要直接改变 this.state ,因为之后调用 setState() 可能会替换你所做的改变。将 this.state 视为不可变的。

    【讨论】:

    • 我一直在使用 react-addons-update 来更新状态,然后使用 setState。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-18
    • 2018-06-24
    • 1970-01-01
    相关资源
    最近更新 更多