浏览代码

persistent data

amenpunk 2 年之前
父节点
当前提交
9f07b7af65
共有 4 个文件被更改,包括 36 次插入2 次删除
  1. 4 0
      src/Components/User.jsx
  2. 3 1
      src/Slices/tokenSlice.js
  3. 22 0
      src/Utils/state.js
  4. 7 1
      src/index.js

+ 4 - 0
src/Components/User.jsx

@@ -1,6 +1,8 @@
1 1
 import React from 'react';
2 2
 import { ThemeProvider, styled, createTheme } from '@mui/material/styles';
3 3
 import '../Css/user.css'
4
+import { removeToken } from '../Slices/tokenSlice'
5
+import { useDispatch } from 'react-redux'
4 6
 
5 7
 import {
6 8
     Container, IconButton, Divider,
@@ -82,8 +84,10 @@ export function User() {
82 84
     const isMovil = Size('(max-width:770px)');
83 85
     const auth = useAuth();
84 86
     const navigate = useNavigate()
87
+    let dispatch = useDispatch()
85 88
 
86 89
     const CerrarSession = () => {
90
+        dispatch(removeToken())
87 91
         auth.logout();
88 92
         navigate('/logincd')
89 93
     }

+ 3 - 1
src/Slices/tokenSlice.js

@@ -1,6 +1,8 @@
1 1
 import { createSlice } from '@reduxjs/toolkit';
2
+// import Cookies from 'js-cookie'
2 3
 
3
-const initialState = { value: null };
4
+// let token = Cookies.get('token') ? Cookies.get('token') : null;
5
+const initialState = { token : null };
4 6
 
5 7
 export const tokenSlice = createSlice({
6 8
   name: "token",

+ 22 - 0
src/Utils/state.js

@@ -0,0 +1,22 @@
1
+export const loadState = () => {
2
+  try {
3
+    const serializedData = localStorage.getItem('state')
4
+    if (serializedData === null) {
5
+      return undefined
6
+    }
7
+    let data = JSON.parse(serializedData)
8
+    console.log('data serializada', data)
9
+    return data
10
+  } catch (error) {
11
+    return undefined
12
+  }
13
+}
14
+
15
+export const saveState = (state) => {
16
+  try {
17
+    let serializedData = JSON.stringify(state)
18
+    localStorage.setItem('state', serializedData)
19
+  } catch (error) {
20
+    console.log('error saving state', error)
21
+  }
22
+}

+ 7 - 1
src/index.js

@@ -6,11 +6,17 @@ import App from './App';
6 6
 import rootReducer from '../src/Reducers/';
7 7
 import { Provider } from 'react-redux';
8 8
 import { configureStore } from '@reduxjs/toolkit';
9
+import { loadState, saveState } from './Utils/state';
9 10
 // import { legacy_createStore as createStore } from '@reduxjs/toolkit';
10 11
 // const store = createStore(rootReducer, window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__())
11 12
 
12 13
 let store = configureStore({
13
-  reducer : rootReducer
14
+  reducer : rootReducer,
15
+  preloadedState: loadState()
16
+})
17
+
18
+store.subscribe( function () {
19
+  saveState(store.getState())
14 20
 })
15 21
 
16 22
 ReactDOM.render(