如何将状态值作为参数传递给函数?

时间:2019-01-15 17:58:13

标签: javascript reactjs redux

我一直在尝试找出如何将状态(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);
    }
}

2 个答案:

答案 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);