【发布时间】:2018-08-24 16:30:07
【问题描述】:
我只是创建一个项目并为一个页面使用多个组件,并通过使用道具将数据传递给每个组件。问题是,当我已经使用道具将数据从父组件更改为子组件并且我已经更新了父组件的数据时,子组件仍然使用旧数据。 例子是这样的:
class Child extends Component{
constructor(props){
super(props);
this.state = {
variabel : props.variable
}
}
render() {
return (
<div>
<h1>{this.state.variable}</h1>
</div>
)
}
}
class Parent extends Component{
constructor(props){
super(props);
this.state = {
variabel : 'Hello'
}
}
render() {
return (
<div>
<Child variable={this.state.variable} />
</div>
)
}
}
所以,当我运行页面并更新父组件中的variabel 状态时,子组件仍然显示旧值。如何使其更新为父组件数据?或者我必须在这种情况下使用 Redux?
【问题讨论】:
-
我想你在这里有一个
typo。variable与variabel不同 -
是的,这似乎是问题所在。不过,快速建议不要使用 props 声明 Child 的 state 属性。我的意思是你应该直接在子组件中使用道具作为
{this.props.variable}
。这样,您的事实来源就保持一致 -
如何更新数据?如果 Child 或 Parent 重新渲染,子组件将发生变化。如果状态发生变化,则会发生重新渲染。如果您的孩子没有改变;那么,这可能与您更改数据的方式有关。
标签: javascript reactjs