问题:子组件的数据,来自于父组件;父组件数据改变了,但是this.props.data并没有更新。
原因:componentDidMount 只在第一次渲染时,执行了一次。后面父组件数据改变,子组件componentDidMount 不再更新。
解决办法:componentWillReceiveProps
componentWillReceiveProps(nextProps){
this.setState({
newData: nextProps.listData
})
}
nextProps 会包含所有存放在 props 里的数据。
注意:
componentWillReceiveProps数据变化就会执行,所以会影响数据。只有当nextProps 变化时,才改变 setState。
componentWillReceiveProps(nextProps){
console.log(nextProps.listData, this.props.listData)
if(nextProps.listData != this.props.listData){
this.setState({
newData: nextProps.listData
})
}
}