2016-06-19 101 views
0

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

我把这些元素融入this.state.map的原因是因为我可以改变(一些)上部部件的东西,而不必每次(这是痛苦的缓慢),重新渲染阵列,我并没有想用shouldComponentUpdate。另外在未来,我可以通过切换不同的地图状态来快速更改元素。

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

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

回答

0

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

从阵营文档:

注: NEVER变异this.state直接,如调用的setState()之后可以代替你做的突变。将this.state视为不可变的。

+0

我一直在使用react-addons-update来更新状态,然后使用setState。 – cocacrave