A non-serializable value was detected in an action, in the path

오오구·2022년 12월 28일
0

💥Error 때려잡기

목록 보기
9/10

A non-serializable value was detected in an action, in the path: payload. Value: ƒ (){return!window.REDUX_DEVTOOLS_EXTENSION_LOCKED&&o.dispatch(...arguments)} Take a look at the logic that dispatched ...

문제

action에 string타입으로 변환 불가능한 값을 전달할 때 발생하는 에러. (직렬화 불가능)
컴포넌트에서 action으로 dispatch 함수를 넘겨주었더니 발생함.

해결

dispatch 전달이 꼭 필요한 상황이라 reducer를 사용하지 않고 외부 함수로 빼버렸음.

내 프로젝트에선 firebase API 사용 시 데이터베이스 데이터가 변경될 때마다 애플리케이션 state를 업데이트 시키기 위해서 onValue 를 사용했다. onValue는 반환값이 없어 redux-toolkit thunk로도 처리하지 못했다. 때문에 dispatch로 state를 업데이트 시키는 콜백 함수를 전달하고, onValue 하는데

내 프로젝트에선 데이터베이스로부터 최신 데이터를 받아와서 state를 업데이트 하려면 반드시 컴포넌트로부터 dispatch를 전달받아야 한다. 즉, action을 직렬화 시키는건 불가능하므로 데이터페이스와 통신하는 API를
해당 함수를 reduceㄱ가 아닌 외부에 만들어서 해결!

profile
더 이상 미룰 수 없다

0개의 댓글