我一直在尝试找出如何将状态(personId)的值作为参数传递给函数(fetchPersonInfo),但是我尝试过的任何方法都没有起作用。所以我想来问一下您的帮助。
class Page extends Component {
state = {
personId: '',
}
componentDidUpdate = () => {
if(this.props.results.length > 0 && this.state.personId !== this.props.results[0].results[0].id){
if(this.props.results[0].results[0].media_type === 'person'){
this.setState({personId: this.props.results[0].results[0].id});
this.personInfo(personId);
}
}
}
personInfo = (personId) => {
if(this.state.personId.length > 0){
this.props.fetchPersonInfo(personId);
}
}
答案 0 :(得分:1)
反应setState
是异步的,您不能像执行操作那样以同步方式调用personInfo()
this.setState({personId: this.props.results[0].results[0].id});
this.personInfo(personId);
假设其余代码都可以,请将上面的代码更改为
this.setState({personId: this.props.results[0].results[0].id}, this.personInfo);
并从函数中删除personId参数
personInfo = () => {
if(this.state.personId){
this.props.fetchPersonInfo(this.state.personId);
}
}
答案 1 :(得分:0)
错误在这里:
this.setState({personId: this.props.results[0].results[0].id});
this.personInfo(personId);
以这种方式调用persionInfo:this.personInfo(this.props.results[0].results[0].id)
或者:
this.props.fetchPersonInfo(this.state.personId);