#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. Я думаю, это был синтаксис… Спасибо