Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
This repository was archived by the owner on Feb 19, 2021. It is now read-only.

Commit 9a9a59d

Browse files
imp persist store to local storage
1 parent 166392b commit 9a9a59d

File tree

4 files changed

+43
-1
lines changed

4 files changed

+43
-1
lines changed

‎package-lock.json

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
]
4747
},
4848
"devDependencies": {
49+
"@types/lodash": "^4.14.137",
4950
"@types/redux-logger": "^3.0.7",
5051
"@types/uuid": "^3.4.5"
5152
}

‎src/redux/configureStore.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,26 @@ import { configureStore, getDefaultMiddleware } from 'redux-starter-kit'
22
import logger from 'redux-logger'
33
import { reduxBatch } from '@manaflair/redux-batch'
44
import preloadedState from './preloadedState';
5+
import { loadState, saveState } from './localStorage'
56
import reducer from './todosSlice';
7+
import { throttle } from 'lodash';
8+
9+
const persistedState = loadState();
610

711
const store = configureStore({
812
reducer: {
913
todos: reducer,
1014
},
1115
middleware: [...getDefaultMiddleware(), logger],
1216
devTools: process.env.NODE_ENV !== 'production',
13-
preloadedState,
17+
preloadedState: (persistedState||preloadedState),
1418
enhancers: [reduxBatch]
1519
})
1620

21+
store.subscribe(throttle(() => {
22+
saveState({
23+
todos: store.getState().todos
24+
});
25+
}, 1000));
26+
1727
export default store;

‎src/redux/localStorage.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
export const loadState = () => {
2+
try {
3+
const serializedState = localStorage.getItem('state');
4+
if (serializedState === null) {
5+
return undefined;
6+
}
7+
return JSON.parse(serializedState);
8+
} catch (err) {
9+
return undefined;
10+
}
11+
};
12+
13+
export const saveState = (state: any) => {
14+
try {
15+
const serializedState = JSON.stringify(state);
16+
localStorage.setItem('state', serializedState);
17+
} catch { }
18+
};
19+
20+
export default { loadState, saveState }

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /