Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 30 | 31 |
Tags
- 그럼에도불구하고
- react
- webpack
- git
- media query
- Servlet
- @media
- 자바문제풀이
- HTML
- node.js
- github
- java
- coding
- node
- JS
- JavaScript
- redux
- cleancode
- 변수
- 자바
- react-router-dom
- CSS
- 그럼에도 불구하고
- 코딩테스트
- 반응형 페이지
- 코드업
- TypeScript
- max-width
- 프론트엔드
- frontend
Archives
- Today
- Total
그럼에도 불구하고
[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)
});
'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