
A non-serializable value was detected in an action, in the path: `type`
오류 내용을 천천히 읽어 보면 action에 직렬화가 불가능한 값을 전달했다는 뜻으로 해석할 수 있다.
여기서 직렬화란 redux에서 값을 주고받을 때 object 형태의 값을 string 형태로 변환하는 것을 말한다. (JSON.stringify)
역직렬화는 직렬화의 반대로, 문자열 형태의 객체를 다시 object 형태로 되돌리는 과정이다. (JSON.parse)
Redux는 state, action에 직렬화가 불가능한 값을 전달할 수 없기 때문에 에러가 발생한 것이다.
해결방법
//아래처럼 사용된 코드를 dispatch({ type: setMovies, payload: { movies } }); //아래처럼 바꾸면 된다. dispatch(setMovies({ movies }));
혹은 다음과 같이 미들웨어를 추가하여 해결하는 방법도 가능하다.
import { configureStore } from '@reduxjs/toolkit'; import userDetailWizardReducer from '@/store/users/userDetailWizard'; import shareReducer from './share/shareSlice'; const store = configureStore({ reducer: { userDetailWizard: userDetailWizardReducer, share: shareReducer, }, middleware: (getDefaultMiddleware) => getDefaultMiddleware({ serializableCheck: false, }), }); // Infer the `RootState` and `AppDispatch` types from the store itself export type RootState = ReturnType<typeof store.getState>; // Inferred type: {posts: PostsState, comments: CommentsState, users: UsersState} export type AppDispatch = typeof store.dispatch; export default store;