значение не сохраняется в «состоянии» с помощью » this.setState ({значение})»

#reactjs #jwt #setstate #react-state-management #react-state

#reactjs #jwt #setstate #управление состоянием реакции #реагирующее состояние

Вопрос:

Я получаю «user» из «decoded token» и устанавливаю этого пользователя в состояние, но значение не сохраняется в состоянии, хотя «user» имеет значение.

Вот мой код.

 class Complainer extends Component {

  state = {};

  componentDidMount() {

    const user = auth.getCurrentUser();

    console.log(user);

    this.setState({ user });

    if (!user) window.location = '/';

  }
  

но пользователь не сохраняется в состоянии. пожалуйста, помогите.

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

1. this.state.user предоставит пользователю метод рендеринга, если вывод auth.getCurrentUser верен. Пожалуйста, предоставьте дополнительную информацию.

2. можете ли вы обновить часть визуализации в своем коде?

3. мой корень приложения — страница входа в систему. когда пользователь вошел в систему, система перенаправляет пользователя на страницу жалобщика. затем в componentDidMount() я получаю пользователя из моего getCurrentUser(), где я декодирую токен.

4. жалобщик класса расширяет компонент { state = {}; componentDidMount() { const user = auth.getCurrentUser(); console.log(пользователь); this.setState({ пользователь }); } render() { return( Фрагмент> <Панель навигации /> <имя основного класса = «контейнер»> <Переключатель> <Путь маршрута = «/ жалобщик / просмотр всех» компонент ={AllComplaints} /> <Путь маршрута =»/ жалобщик / не найден» компонент = {notfound} />this.state.user} /> </Switch> </main> Фрагмент> ); }

Ответ №1:

Попробуйте этот код:

 class Complainer extends Component
{
  state = {
    user: '',
  };

  componentDidMount(){
    const user = auth.getCurrentUser();
    console.log(user);
    this.setState({
      user: user
    });
  }

  render(){

  return (
    <React.Fragment>
      <Navbar />
      <main className="container">
        <Switch>
          <Route path="/complainer/view-all" component={AllComplaints} />
          <Route path="/complainer/not-found" component={notfound} />
          <Showcase user={this.state.user} />
        </Switch>
      </main>
    </React.Fragment>
  );
}