Input + Output = True

redux persist ์‚ฌ์šฉ๋ฒ• (๋ฆฌ๋•์Šค ์ƒˆ๋กœ๊ณ ์นจ ๋ฐ์ดํ„ฐ ์œ ์ง€) ๋ณธ๋ฌธ

๐ŸŽจFrontEnd/React

redux persist ์‚ฌ์šฉ๋ฒ• (๋ฆฌ๋•์Šค ์ƒˆ๋กœ๊ณ ์นจ ๋ฐ์ดํ„ฐ ์œ ์ง€)

IOTrue 2023. 1. 5. 00:17

๐Ÿ˜Ž redux-persist ์‚ฌ์šฉ๋ฒ•

โœ… redux persist๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ?

๋ฆฌ๋•์Šค์˜ store๋Š” ํŽ˜์ด์ง€ ์ƒˆ๋กœ๊ณ ์นจ์ด ๋  ๋•Œ state ๊ฐ’์ด ์ดˆ๊ธฐํ™” ๋œ๋‹ค.

๋งŒ์•ฝ ํŽ˜์ด์ง€ ์ƒˆ๋กœ๊ณ ์นจ์„ ํ•ด๋„ state ๊ฐ’์„ ์œ ์ง€ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด

์ €์žฅํ•˜๊ณ ์ž ํ•˜๋Š” reducer state๋ฅผ LocalStorage ๋˜๋Š” SessionStorage์— ์ €์žฅํ•ด์„œ

์ƒˆ๋กœ๊ณ ์นจ์„ ํ•ด๋„ ์ €์žฅ๊ณต๊ฐ„์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ redux์— ๋ถˆ๋Ÿฌ์˜ค๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด ๋ฐฉ๋ฒ•์„ redux-persist๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

โœ… redux persist ์„ธํŒ… ๋ฐฉ๋ฒ•

redux๊ฐ€ ์ด๋ฏธ ์„ธํŒ…๋˜์–ด ์žˆ๋Š” ์ƒํ™ฉ์„ ๊ฐ€์ •ํ•˜๊ณ  ์ง„ํ–‰

 

redux persist ์„ค์น˜

yarn add redux-persist

 

reducer์— persist store ์ •์˜

//configStore.js

import { createStore, combineReducers } from "redux";
โœ” import { persistReducer } from "redux-persist";
โœ” import storage from "redux-persist/lib/storage";
//localStorage ์‚ฌ์šฉ : import storage from 'redux-persist/lib/storage
//sessionStorage ์‚ฌ์šฉ : import storageSession from 'redux-persist/lib/storage/session

import todos from '../modules/todo';

โœ” const persistConfig = {
    key: "root", //root : ์ตœ์ƒ๋‹จ์˜ ํŒŒ์ผ๋ถ€ํ„ฐ ์ ์šฉ
    storage, //LocalStorage ์ €์žฅ, sessoin -> storage : storageSession
    whitelist: ["todos"] //์ €์žฅํ•  reducer
    //blacklist: ["์ด๊ฒƒ๋งŒ ์ œ์™ธ"]
    
};

const rootReducer = combineReducers({ todos });
โœ” const perReducer = persistReducer(persistConfig, rootReducer);

const store = createStore(perReducer); 

export default store;

 

persist๊ฐ€ ์ ์šฉ๋œ store ์‚ฌ์šฉ

// index.js

import React from "react";
import ReactDOM from "react-dom/client";
import App from "./App";
import reportWebVitals from "./reportWebVitals";

import store from "./redux/config/configStore";
import { Provider } from "react-redux";

โœ” import { persistStore } from "redux-persist";
โœ” import { PersistGate } from "redux-persist/integration/react";

โœ” const persistor = persistStore(store);

const root = ReactDOM.createRoot(document.getElementById("root"));
root.render(
  <Provider store={store}>
  โœ” <PersistGate loading={null} persistor={persistor}>
    <App />
    <PersistGate/>
  </Provider>
);

 

๐Ÿ’ก LocalStorage , SessionStorage

์„œ๋ฒ„์˜ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๋Š” ๋ธŒ๋ผ์šฐ์ €์˜ ๋‚ด๋ถ€ ์ €์žฅ์†Œ

LocalStorage : ์ƒˆ๋กœ๊ณ ์นจ์„ ํ•ด๋„ ๋ฐ์ดํ„ฐ๊ฐ€ ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š์Œ
SessionStorage : ์ƒˆ๋กœ๊ณ ์นจ ์‹œ ๋ฐ์ดํ„ฐ ์ดˆ๊ธฐํ™”๋จ

 

์ €์žฅ์†Œ ์ข…๋ฅ˜ ๋ณด๋Ÿฌ๊ฐ€๊ธฐ

 

์ฟ ํ‚ค, ์„ธ์…˜, ์บ์‹œ, ์Šคํ† ๋ฆฌ์ง€

๐Ÿ˜Ž ์ฟ ํ‚ค, ์„ธ์…˜, ์บ์‹œ, ์Šคํ† ๋ฆฌ์ง€ ์ฟ ํ‚ค์™€ ์„ธ์…˜์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ์™€ ์ฐจ์ด์  ์š”์•ฝ HTTP์˜ connectionless, stateless ํ”„๋กœํ† ์ฝœ ๋กœ ์ธํ•ด ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์™€ ํ†ต์‹ ์„ ํ•  ๋•Œ๋งˆ๋‹ค ๊ณ„์† ์ธ์ฆ์ด ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ

iotrue.tistory.com

 

๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” persist

 

 

 

์ฐธ๊ณ 

https://github.com/rt2zz/redux-persist

https://kyounghwan01.github.io/blog/React/redux/redux-persist/

 

 

 

Comments