Как передать значение из состояния в качестве параметра функции? - PullRequest
0 голосов
/ 15 января 2019

Я пытался выяснить, как я могу передать значение из состояния (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 голосов
/ 15 января 2019

Реагирует 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);
    }
}
0 голосов
/ 15 января 2019

Ошибка здесь:

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...