Я не храню токены / данные аутентификации в Redux или локальном состоянии, я использую модуль аутентификации, который просто читает / записывает localStorage
и условно отображает панель навигации:
<div>
...
<a>{Auth.isAuthenticated() ? 'Sign Out' : 'Sign In'}</a>
</div>
и Auth.js
:
class Auth {
static storeToken(token) {
localStorage.setItem('token', token)
}
static isAuthenticated() {
return localStorage.getItem('token') !== null
}
static removeToken() {
localStorage.removeItem('token')
}
static getToken() {
return localStorage.getItem('token')
}
}
export default Auth
Это все еще не идеально, потому что все мое состояние не в одном месте, но я думаю, что это немного лучше, чем дублирование информации, как вы сказали