在我拥有的组件中,我正在使用componentWillReceiveProps()异步设置组件中的多个状态。父组件正在将新道具发送给该孩子。我的期望是,每当孩子获得新道具时,都会触发componentWillReceiveProps()并接收道具并相应地设置状态。问题是有时它可以正常工作,有时却不起作用!正如您在代码中看到的那样,我添加了一个if条件,以便每当this.props.community
获得值时,它就会通过if块中的语句。但是有时不是,this.props.community
仍然是undefined
!有人可以向我解释发生了什么以及如何解决吗?
componentWillMount() {
this.componentWillReceiveProps(this.props);
},
componentWillReceiveProps(props) {
if(this.props.community && this.state.record){
if(...){
this.setState({....});
} else {
console.log("this.props.community = ", this.props.community) // undefined
console.log("this.state.record = ", this.state.record)
}
},
最佳答案
componentWillReceiveProps (nextProps) {
if (nextProps.community !== this.props.community) {
this.setState({community: nextProps.community})
}
}
componentWillReceiveProps的参数是新传入的道具。 this.props.community是当前的道具,并且是“旧的”。无论您有什么异步方式,都可能还没有返回“社区”。
关于javascript - componentWillReceiveProps()被触发,但是没有获取 Prop ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49028085/