오류 발견
리액트 앱 실행시 콘솔창에 다음과 같은 오류 로그가 나타납니다.
A non-serializable value was detected in an action, in the path: `register`.
Value: ƒ register(key) {
_pStore.dispatch({
type: _constants__WEBPACK_IMPORTED_MODULE_2__["REGISTER"],
key: key
});
}
오류 원인
로그만 보면redux는 state, action에 직렬화가 불가능한 값을 전달할 수 없어 발생하는 오류입니다. 하지만 기능은 정상적으로 작동합니다. 더 찾아본 결과, redux-persist의 고유 문제인것 같습니다.
non-serializable value error · Issue #988 · rt2zz/redux-persist
persist의 몇가지 액션들에서 발생하는 오류였습니다. redux toolkit 공식 문서에서도 이에 대한 설정을 추가해 놓았습니다.
오류 해결
persist의 몇몇 액션들에 대해서 직렬화 체크를 무시하도록 설정하면 됩니다.
configureStore를 다음과 같이 수정합니다.
import {
FLUSH,
REHYDRATE,
PAUSE,
PERSIST,
PURGE,
REGISTER,
} from "redux-persist";
...
const store = configureStore({
reducer: persistedReducer,
devTools: process.env.NODE_ENV !== "production",
middleware: (getDefaultMiddleware) =>
getDefaultMiddleware({
serializableCheck: {
ignoredActions: [FLUSH, REHYDRATE, PAUSE, PERSIST, PURGE, REGISTER],
},
}).concat(sagaMiddleware, logger),
});
'React' 카테고리의 다른 글
[트러블슈팅]조회 요청 시 동일한 액션이 반복되는 문제 with Redux (0) | 2024.02.24 |
---|---|
React에서 scroll fade in 애니메이션 구현하기 (1) | 2023.12.30 |