#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>
);
}