저번에 분량 조절 실패로 막 잘라내느라 짧아졌는데 원래는 하나의 글이었음,,,
참고
const checkSession = async () => {
const session = sessionStorage.getItem('mayl-session')
if (session) return;
navigate("/sign-in");
};
useEffect(() => {
checkSession();
}, []);

export const store = configureStore({
reducer: {
auth: null, // 리듀서를 생성해서 넣어야 함
},
});
import { createSlice } from "@reduxjs/toolkit";
const authSlice = createSlice({
name: "auth",
initialState: {
session: null,
},
reducers: {
setSession: (state, action) => {
console.log(action.payload);
state.session = action.payload;
},
removeSession: (state) => {
state.session = null;
},
},
});
export const { setSession, removeSession } = authSlice.actions;
export default authSlice.reducer;
export const { setSession, removeSession } = authSlice.actions;
sessionStorage.setItem(KEY, session) 형태로 사용 되었으나 dispatch 메서드로 변경 되었다import { useDispatch } from "react-redux";
import { setSession } from "../store/auth";
const dispatch = useDispatch();
const handleSignIn =async()=>{
//생략
const response = await signIn();
dispatch(setSession(response.data.session));
}
const session = useSelector((state) => state.auth.session);
return (
//.. 생략
<span>세션: {session.access_token}</span>
)
npm install redux-persist
npm i --save-dev @types/redux-persist
const persistConfig = {
key: "mayl-session",
storage: storageSession,
};
const persistedReducer = persistReducer(persistConfig, authReducer);
export const store = configureStore({
reducer: {
auth: persistedReducer,
},
});
export const persistor = persistStore(store)
createRoot(document.getElementById("root")!).render(
<StrictMode>
<Provider store={store}>
<PersistGate persistor={persistor}>
<App />
</PersistGate>
</Provider>
</StrictMode>
);

이 글에서 사용한 기능 말고도 리덕스를 활용할 수 있는 방법은 많다 첨부한 공식 문서를 참고해 다들 리덕스를 사용해 보시길