не удается установить состояние после запроса get

#reactjs #express #axios

#reactjs #выразить #axios

Вопрос:

Я пытаюсь изменить свое состояние с помощью следующих данных после запроса на выборку, но состояние никогда не меняется после установленного состояния введите описание изображения здесь

 profileinfo:
  {
    Firstname:'Jeff ',
    Lastname:'Series',
    email:'exam.com',
    Address:'502B Inner Circle Riverwalk'
  }

componentDidMount() {
  fetch("http://localhost:3001/login")
    .then(response=>response.json()
    .then(data=>(
        this.setState({profileinfo:data[0].firstname}))))
        console.log(this.state.profileinfo)
    }   
  

Комментарии:

1. Для setState() работы вам необходимо сохранить все ваше состояние в объекте с именем state, вы пытаетесь обновить состояние, которого не существует

Ответ №1:

Вы пробовали использовать обратный вызов set state? возможно, ваше состояние еще не было обновлено при запуске консоли.сбой в журнале.

может быть, попробовать

 this.setState({profileinfo:data[0].firstname}, () => console.log(this.state.profileinfo))
  

Ответ №2:

Я думаю, что это синтаксис. Вам нужно закрыть скобку в .then(response=>response.json()

 componentDidMount() {
  fetch("http://localhost:3001/login")
  .then(response=>response.json()) // <-Insert a close bracket here
  .then(data=> this.setState({profileinfo:data[0].firstname}, () => console.log(this.state.profileinfo)) // <- Call console in callback
  ) // <- Remove one here
    console.log(this.state.profileinfo)
} 
  

И вызовите консоль в функции обратного вызова, чтобы получить правильное значение. Потому что setState это асинхронная функция.

Комментарии:

1. Я думаю, это был синтаксис… Спасибо