그럼에도 불구하고

👨‍💻

[Redux] Redux Toolkit - A non-serializable value was detected in an action 오류 해결 본문

React/Redux

[Redux] Redux Toolkit - A non-serializable value was detected in an action 오류 해결

zenghyun 2023. 6. 8. 11:14

리덕스 미들웨어를 사용하던 도중 다음과 같은 에러가 발생했습니다.

 

 

 

 

오류의 내용은 Redux에서 값을 주고, 받을 때 object 형태의 값을 string 형태로 변환(JSON.stringfy)하는데, 이 상황에서 변환이 불가능한 값을 전달했다는 에러입니다.

 

좀 더 자세히 들여다보면, action에 직렬화가 불가능한 값을 전달했다는 뜻입니다.

 

여기서 직렬화란 redux에서 값을 주고받을 때 object 형태의 값을 string 형태로 변환하는 것을 말합니다. (JSON.stringfy) 

 

역직렬화는 직렬화의 반대로, 문자열 형태의 객체를 다시 object 형태로 되돌리는 과정이다. (JSON.parse) 

 

Redux는 state, action에 직렬화가 불가능한 값을 전달할 수 없기 때문에 에러가 발생한 것입니다.

 

이는 액션 생성자 함수에 toString() 메서드를 적용해도 된다고 하는데, 이는 미들웨어 설정을 통해서도 해결할 수 있습니다. 

 

 

📌 index.js

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import React from 'react';
import ReactDOM from 'react-dom/client';
import './index.css';
import App from './App';
import reportWebVitals from './reportWebVitals';
import { configureStore } from '@reduxjs/toolkit'
import rootReducer from './module';
import { Provider } from 'react-redux';
import loggerMiddleware from './lib/loggerMiddleware';
 
const store = configureStore({
  reducer: rootReducer,
  middleware: (getDefaultMiddleware) =>
    getDefaultMiddleware({
      serializableCheck: false,
    }).concat(loggerMiddleware)
});
 
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
  <React.StrictMode>
    <Provider store={store}>
    <App />
    </Provider>
  </React.StrictMode>
);
 
reportWebVitals();
 
cs

 

 

const store = configureStore({
  reducer: rootReducer,
  middleware: (getDefaultMiddleware) =>
    getDefaultMiddleware({
      serializableCheck: false,
    }).concat(loggerMiddleware)
});

 

 

ref: https://guiyomi.tistory.com/116

        https://velog.io/@pest95/RTK-non-serializable-value-%EC%98%A4%EB%A5%98-%ED%95%B4%EA%B2%B0-%EB%B0%A9%EB%B2%95

'React > Redux' 카테고리의 다른 글

[Redux] redux-thunk와 redux-saga란?  (1) 2023.06.08
[Redux] Redux-logger 사용하기  (0) 2023.06.08
[Redux] Redux createStore 취소선이 그어지는 이유  (0) 2023.05.30
[Redux] Redux middleware란?  (0) 2023.05.09
[Redux] Redux란?  (0) 2023.04.21
Comments