벌써 입문 숙련 주차까지 끝이 났다.
이번 주엔 리덕스를 사용하는 방식에 대해서 배웠고, 간단하게나마 리덕스의 흐름을 이해할 수 있었다.
UI (view): 사용자가 사용할 수 있는 화면
Action: UI 쪽에서 변경될 수 있는 설정된 명령어
Dispatcher: Reducer로 액션을 보내는 일종의 캐리어
Reducer: 변화를 일으키는 함수
Store: 전역 상태 관리 창고
State: 관리되고 있는 상태값
<form>
내부의<button>
은 클릭 시, submit 이벤트가 발생된다.
데이터를 submit하기 위해 페이지를 reload 하고 페이지가 reload되면 리덕스 store의 state가 초기화된다.
리덕스 내의 데이터를 유지하기 위해서는 데이터를 저장하고 읽어오는 방법을 사용하면 된다.
데이터베이스에 데이터를 저장하는 방법이 대표적이지만 데이터베이스를 사용할 수 없는 경우에는 간단하게 로컬스토리지를 이용하는 방법을 사용할 수 있다.
리덕스에서 로컬 스토리지를 이용하는 방법은 대표적으로 두가지가 있다. redux-persist
라는 라이브러리를 사용하는 방법과 store.subscribe()
함수를 이용하는 방법이 있다.
redux-persist
import { persistStore } from "redux-persist";
import { PersistGate } from "redux-persist/integration/react";
...
const persistor = persistStore(store);
const Root = () => (
<Provider store={store}>
<PersistGate loading={null} persistor={persistor}>
<App />
</PersistGate>
</Provider>
);
ReactDOM.render(<Root />, document.getElementById("root"));
store.subscribe()
const persistedState = localStorage.getItem('key')
? JSON.parse(localStorage.getItem('key'))
: [];
const store = createStore(rootReducer, persistedState);
store.subscribe(() => {
localStorage.setItem('key', JSON.stringify(store.getState()))
})