Есть два подхода, которые вы упоминаете здесь.Вы можете использовать компонент высшего порядка 'withRouter' , который дает компонентам доступ к объекту истории.Используя объект history , который будет передан вашему компоненту в качестве реквизита, вы можете перейти к нужному маршруту.
Лично мне нравится настраивать ссылки выхода для визуализации компонента.он содержит логику выхода из системы и выполняет перенаправление на вход после его завершения.Таким образом, пользователи могут перейти непосредственно к ссылке выхода, если они хотят, и вы можете ссылаться на нее из любого места в вашем приложении по мере необходимости, без необходимости дублировать логику.
В маршрутизаторе браузера вы можетедобавьте путь для "/ logout", который визуализирует компонент, подобный этому (основываясь на вашей логике):
import React, { Component } from 'react';
import { Redirect } from 'react-router';
export default class LogOut extends Component {
state = {
redirect: false,
};
componentDidMount() {
sessionStorage.setItem("userToken", '');
sessionStorage.clear();
this.setState({ redirect: true });
}
render() {
return this.state.redirect ?
<Redirect to={'/sign-in'} /> :
null;
}
}
Обычно я бы сделал ajax-запрос для очистки сеанса и затем установил быState после завершения, но вашвсе на стороне сервера.