反应道具不更新

时间:2016-06-19 09:56:38

标签: javascript reactjs

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

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

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

这是一种合法的方式吗? 对不起,我没有提供代码示例。目前这只是一团糟。

1 个答案:

答案 0 :(得分:0)

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

来自React docs:

  

注意:   永远不要直接改变this.state,因为之后调用setState()可能会替换你所做的突变。把this.state看作是不可变的。