// 1 - Parent - Wrong
render() {
const { record } = this.state;
if (!record) { return null; }
return (
<div>
<p>Now this is visible</p>
<Children id={record.id};
</div>
);
}
// 2 - Parent - Right
render() {
const { record } = this.state;
const recordId = record ? record.id : null;
return (
<div>
<p>Now this is visible</p>
<Children id={recordId};
</div>
);
}
// Children
componentWillReceiveProps(nextProps) {
console.log(nextProps.id);
}如果状态变为: this.state ={ record:{ id:'demo‘}}
编写第一种方法的代码时,即使父记录由于接收到了新的状态而变得可见,nextProps在子componentWillReceiveProps中也始终是未定义的。
而第二种则是正常工作的。
为什么第一种方法不正确?
发布于 2017-07-15 15:33:43
根据正式文件,React在安装过程中不使用初始道具调用componentWillReceiveProps。只有当组件的某些道具可能更新时,它才会调用此方法。
我为您的问题找到了解决办法,并为解决方案创建了下面的小提琴。它应该能解决你所有的问题。
https://stackoverflow.com/questions/45118353
复制相似问题