componentWillReceiveProps

componentWillReceiveProps

在我拥有的组件中,我正在使用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/

10-11 03:17