Как сделать ответ API с помощью (Обещать все) - PullRequest
0 голосов
/ 05 сентября 2018

Я создаю пример проекта CMS, затем у меня возникла проблема с получением данных. Я использовал Promise.all javascript, теперь я получил ошибку, вопрос в том, как сделать setState в JSX. Спасибо.

Uncaught ReferenceError: renderMission не определена

Это код:

constructor() {
    super();
    this.state = {

    }

}

componentWillMount() {

    Promise.all([
        axios.get('/api/mission'),
        axios.get('/api/store')
    ]).then(response => {


        const [storesApiRes, missionsApiRes] = response;
        this.setState({storesApiRes,missionsApiRes}, () => {
            console.log(missionsApiRes);
        });

    })
}

renderMission() {
   return this.state.missionsApiRes.map(mission => 
        <div>{mission.content}</div>
    )
}

В моем JSX

<div className="container">
     {renderMission()}
 </div>

Мой журнал консоли Sample

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

Вам необходимо сделать следующее:

Обновите ваш JSX, включив в него this

<div className="container">
  {this.renderMission()}
</div>

И обновите свое состояние по умолчанию, потому что страница будет отображаться до разрешения обещаний были решены. Таким образом, ваш файл JavaScript должен выглядеть так:

constructor() {
  super();
  this.state = {

  }

}

componentWillMount() {

  this.setState({
    missionsApiRes: []
  });

  Promise.all([
    axios.get('/api/mission'),
    axios.get('/api/store')
  ]).then(response => {
    const [storesApiRes, missionsApiRes] = response;
    this.setState({storesApiRes,missionsApiRes}, () => {
        console.log(missionsApiRes);
    });
  })
}

renderMission() {
  return this.state.missionsApiRes.map(mission => 
    <div>{mission.content}</div>
  )
}
0 голосов
/ 05 сентября 2018

Вы должны использовать this для доступа к функциям того же компонента.

<div className="container">
 {this.renderMission()}
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...