gpt4 book ai didi

javascript - componentWillReceiveProps() 被触发但它没有获取 props

转载 作者:行者123 更新时间:2023-12-03 02:24:06 25 4
gpt4 key购买 nike

在我拥有的组件中,我使用 componentWillReceiveProps() 异步设置组件中的多个状态。父组件正在向该子组件发送新的 props。我的期望是,每当 child 获得新的 Prop 时,就会触发 componentWillReceiveProps() 并接收 Prop 并相应地设置状态。问题是它有时能正常工作,有时却不能!正如您在代码中看到的,我添加了一个 if 条件,以便每当 this.props.community 获取值时,它都会通过 if block 中的语句。但有时情况并非如此,this.props.community 仍然未定义!有人可以解释一下发生了什么事以及如何解决它吗?

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 的参数是新传入的 props。 this.props.community 是当前的 props,并且是“旧的”。无论您拥有什么异步,可能还没有通过“社区”返回。

关于javascript - componentWillReceiveProps() 被触发但它没有获取 props,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49028085/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com