Redux -> add localstorage backup & state loader functionality
parent
9f90fa0ba2
commit
fbc2632490
|
|
@ -0,0 +1,38 @@
|
|||
export const loadState = () => {
|
||||
try {
|
||||
const stateName = localStorage.getItem('user_key')
|
||||
const serializedState = localStorage.getItem(stateName)
|
||||
|
||||
if (stateName === null) {
|
||||
return {}
|
||||
} else if (serializedState === null) {
|
||||
return {}
|
||||
} else {
|
||||
return JSON.parse(serializedState)
|
||||
}
|
||||
|
||||
|
||||
} catch (err) {
|
||||
console.log(err)
|
||||
return undefined
|
||||
}
|
||||
};
|
||||
|
||||
export const saveState = (state) => {
|
||||
try {
|
||||
|
||||
const stateName = localStorage.getItem('user_key')
|
||||
const serializedState = JSON.stringify(state)
|
||||
|
||||
if (stateName === null) {
|
||||
return undefined
|
||||
} else if (serializedState === null) {
|
||||
return undefined
|
||||
} else {
|
||||
localStorage.setItem(stateName, serializedState)
|
||||
|
||||
}
|
||||
} catch (err) {
|
||||
console.log('save in local storage error')
|
||||
}
|
||||
};
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
import { configureStore } from '@reduxjs/toolkit';
|
||||
|
||||
import { loadState, saveState } from './stateLoader'
|
||||
import lodash from 'lodash'
|
||||
|
||||
import { modelCrudReducer } from './slices/modelCrudSlice'
|
||||
import { renderCrudReducer } from './slices/renderCrudSlice'
|
||||
import { renderWebsocketReducer } from './slices/renderWebsocketSlice'
|
||||
import { userAuthReducer } from './slices/userAuthSlice'
|
||||
import { userCrudReducer } from './slices/userCrudSlice'
|
||||
|
||||
|
||||
let persistedState = loadState()
|
||||
|
||||
export const store = configureStore({
|
||||
reducer: {
|
||||
modelCrudReducer,
|
||||
renderCrudReducer,
|
||||
renderWebsocketReducer,
|
||||
userAuthReducer,
|
||||
userCrudReducer
|
||||
},
|
||||
preloadedState: persistedState
|
||||
})
|
||||
|
||||
store.subscribe(() => {
|
||||
saveState(store.getState());
|
||||
});
|
||||
|
||||
store.subscribe(lodash.throttle(() => {
|
||||
saveState(store.getState())
|
||||
}, 100))
|
||||
Loading…
Reference in New Issue