Реагируйте setState с функцией - PullRequest
0 голосов
/ 24 мая 2018

Я пытаюсь установить setState в компоненте React, используя функцию обратного вызова, которая сейчас является рекомендуемым способом.Он находится в componentDidMount, и когда я получаю данные о своих заданиях обратно, мне нужно обновить состояние.Это работает, когда я устанавливаю его напрямую, но я пытался вызвать функции обратного вызова и не могу заставить его работать.Пример кода приведен ниже с одной из моих многочисленных попыток.

async componentDidMount(){
    const jobs = await loadJobs();
    this.setState({jobs});
    //this.setState((prevState, jobs) =>  {return {jobs: [prevState,...jobs]}})
}

Какой правильный синтаксис?

1 Ответ

0 голосов
/ 24 мая 2018

Функцию setState нужно использовать только в том случае, если вы хотите обновить текущее состояние на основе prevState, в вашем случае кажется, что вы просто хотите установить задания состояния, вы просто напишите

this.setState({jobs});

Однако, если вы хотите использовать функционал setState, вы все равно напишите

  this.setState((prevState) =>  {
     return {jobs};
  })

Вам нужно обновить задания, получив значение из prevState и добавив результат в предыдущее состояние, вы бы сделали это следующим образом

async componentDidMount(){

    const jobs = await loadJobs();
    this.setState((prevState) =>  {
       return {jobs: [...prevState.jobs, ...jobs]}
    })

}
...