Я новый веб-разработчик, и совсем недавно во время работы над проектом у меня возникли проблемы с тем, что мой компонент не перерисовывался после вызова setState. Я рыскал по сети в поисках ответов на вопрос, почему мой setState не работает, и наконец понял, в чем моя проблема.
Теперь есть довольно конкретная причина, по которой это не сработало, но, поскольку я допустил ошибку, я полагаю, что некоторые новые разработчики также могут сделать то же самое. Я надеюсь, что это поможет любому, у кого есть эта проблема.
Мой бэкэнд использовал mongo, и мой вызов axios делал запрос к бэкэнду, чтобы получить полную учетную запись пользователя, и мой бэкэнд отвечал всем объектом пользователя. Я решил, что будет проще всего просто сохранить весь пользовательский объект в состоянии; Это была моя проблема все время.
componentDidMount() { axios.get(`/api/get-user?token=${this.state.token}`) .then(res => { this.setState({ user: res.data.user }) }) }
Итак, затем, пытаясь отладить это, я решил, что собираюсь просто попытаться получить отдельные части от этого, которые все время я просто пытался получить первое имя, поэтому вместо этого я изменил его на это
componentDidMount() { axios.get(`/api/get-user?token=${this.state.token}`) .then(res => { this.setState({ firstName: res.data.user.firstName }) }) }
И вуаля, мой компонент начал повторный рендеринг, когда на вызов пришел ответ. теперь, к сожалению, я не знаю, почему оригинальный способ не работал, но я надеюсь, что это кому-то поможет.