Melhorias na Autenticação
Persistindo a autenticação do usuário
Instalação da lib redux-persist rodando o comando $ yarn add redux-persist
Arquivo src/store/persistReducers.js
import storage from 'redux-persist/lib/storage';import { persistReducer } from 'redux-persist';export default reducers => {const persistedReducer = persistReducer({key: 'gobarber', // A key se refere à aplicaçãostorage,whitelist: ['auth', 'user'], // Os reducers a serem persistidos},reducers);return persistedReducer;};
Alterações no arquivo src/store/index.js
import { persistStore } from 'redux-persist';import createSagaMiddleware from 'redux-saga';import createStore from './createStore';import persistReducers from './persistReducers';import rootReducer from './modules/rootReducer';import rootSaga from './modules/rootSaga';const sagaMonitor =process.env.NODE_ENV === 'development'? console.tron.createSagaMonitor(): null;const sagaMiddleware = createSagaMiddleware({ sagaMonitor });const middlewares = [sagaMiddleware];const store = createStore(persistReducers(rootReducer), middlewares);const persistor = persistStore(store);sagaMiddleware.run(rootSaga);export { store, persistor };
Alteração no método de importação do arquivo Route.js
ANTES
import store from '~/store';
DEPOIS
import { store } from '~/store';
Arquivo src/App.js
Importação do PersistGate
:
import { PersistGate } from 'redux-persist/integration/react';
Importação do persistor
e importação do store
sem a exportação default:
ANTES
import store from './store';
DEPOIS
import { store, persistor } from './store';
Inserção do PersistGate
em coberto pelo Provider e cobrindo os demais componentes:
function App() {return (<Provider store={store}><PersistGate persistor={persistor}><Router history={history}><Routes /><GlobalStyle /></Router></PersistGate></Provider>);}