Добрый вечер!
У меня уже приложение готово! Ура-ура! Но есть следующий кусок кода, который я не могу найти "правильное" на интуитивном плане место.
if (localStorage.getItem('jwtToken')) {
const decoded_jwt = jwt_decode(localStorage.getItem('jwtToken'));
store.dispatch(setCurrentUser(decoded_jwt));
const current_time = Date.now() / 1000;
if (current_time > decoded_jwt.exp) {
store.dispatch(refresh())
}
}
Я проверяю, а нет ли у нас токен в localStorage? Если есть, то сообщаем об этом (dispatch`им), а что если вдруг токен уже сгорел(протух), сообщаем об этом (сучим).
Вот можно вставить этот код где-то здесь (index.js):
import React from 'react';
import ReactDOM from 'react-dom';
import { Provider } from 'react-redux';
import store from './redux/store';
import { BrowserRouter } from 'react-router-dom';
import App from './components/App';
ReactDOM.render(<Provider store={store}><BrowserRouter><App /></BrowserRouter></Provider>, document.getElementById('app'));
Сейчас он вот здесь (App.js - Component):
import React, { Component } from 'react';
import NavigationBar from "./NavigationBar";
import { Switch, Route } from 'react-router-dom';
import Home from "./Home.page";
import Login from "./Login.page";
import Register from "./Register.page";
import Profile from "./Profile.page";
import NotFound from "./NotFound.page";
import jwt_decode from 'jwt-decode';
import store from '../redux/store';
import { setCurrentUser, refresh } from '../redux/actions/authActions';
if (localStorage.getItem('jwtToken')) {
const decoded_jwt = jwt_decode(localStorage.getItem('jwtToken'));
store.dispatch(setCurrentUser(decoded_jwt));
const current_time = Date.now() / 1000;
if (current_time > decoded_jwt.exp) {
store.dispatch(refresh())
}
}
class App extends Component {
render() {
return (
<div>
<header>
<NavigationBar/>
</header>
<main>
<Switch>
<Route exact path="/" component={Home}/>
<Route exact path="/login" component={Login}/>
<Route exact path="/register" component={Register}/>
<Route exact path="/profile" component={Profile}/>
<Route component={NotFound}/>
</Switch>
</main>
</div>
);
}
}
export default App;
1. Как вам идея разместить самый первый код (код проверки токена) в ComponentWillMount() в компоненте App (App.js)?
Посоветуйте, пожалуйста, куда грамотнее будет это вставить?
Заранее большое спасибо!