Невозможно установить данные axios в состоянии - PullRequest
0 голосов
/ 23 сентября 2019

Я инициализировал состояние данных как нулевой массив.Я пытаюсь получить данные из метода post axios, например

componentDidMount(){
    var a=this;
    axios.post("http://localhost/axios/index.php")
    .then((res)=>{
      a.setState({datas:res.data});
    });
    console.log(this.state);
}

Я получаю

{0: {…}, 1: {…}, 2: {…}, 3: {…}, 4: {…}, 5: {…}}
0: {id: "1", typee: "class", user_id: "1"}
1: {id: "2", typee: "class", user_id: "1"}
2: {id: "3", typee: "course", user_id: "1"}
3: {id: "4", typee: "class", user_id: "2"}
4: {id: "5", typee: "test_series", user_id: "3"}
5: {id: "6", typee: "test_series", user_id: "2"}

эти данные, если я console.log (res.data), но если я console.log(this.state), тогда он все еще дает мне нулевой массив

1 Ответ

3 голосов
/ 23 сентября 2019

setState является асинхронным, поэтому, когда вы регистрируете консоль, состояние еще не было обновлено.Вы можете использовать форму обратного вызова setState, чтобы получить обновленное состояние:

setState(
  { datas:res.data },
  () => console.log(this.state)
);

подробнее здесь: https://reactjs.org/docs/react-component.html#setstate

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...