Я думаю, у вас правильная идея. Аутентифицируйте пользователя, как вы делаете, сохраните токен в localStorage и сохраните пользовательские данные в избыточном количестве. Поскольку при обновлении хранилище избыточности запускается заново, и вам по-прежнему нужны ваши пользовательские данные, я бы отправил действие где-нибудь в вашем приложении, вероятно, в корень приложения, когда оно впервые монтируется, чтобы получить зарегистрированные пользовательские данные на основе сохраненного токена. в местном хранилище.
Примерно так:
class App extends Component {
componentDidMount() {
// User will come from the store. If we do not have a user,
// but we have a token, then the user is logged in
if (!this.props.user && sessionStorage.getItem('token')) {
// a redux dispatch function to authenticate a JWT
this.props.validateJWT();
}
}
}
Что касается прохождения реквизита через маршрутизатор, вам придется использовать renderProp, что может быть немного сложнее. Не могли бы вы поделиться своим кодом для решения проблемы с роутером?