개발자

RTK action, state 직렬화 질문

2024년 01월 19일조회 103

안녕하세요! 저는 React + redux-tool-kit을 이용하여 개인 프로젝트를 진행하고 있습니다 redux의 state와 action에서는 직렬화가 되지 않는 객체등을 넣으면 안된다고 알고 있습니다. 외부로 요청한 api에서 받은 객체를 전역으로 사용하기 위해서 store의 state에 넣어주어야 한다고 생각하였는데 직렬화 관련 오류가 확인이 됩니다. 이렇게 직렬화 되지 않는 객체를 action.payload에 전달할 경우에는 해당 action만 getDefaultMiddleware에서 직렬화 검사를 하지 않는 옵션을 주어야 하는 걸까요?

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 1

백승훈님의 프로필 사진

음.. 정확한 코드가 없어 확답하기 힘드나 직렬화 "시켜서" 사용한다던지 필요한 정보만 빼서 state에 저장하고 활용하면 되지 않을까 싶습니다. 🤔 굳이 전체 객체를 꼭 넣어야 되는 상황이 안생기는게 베스트일것 같고 따로 필요정보의 정리 및 추출이 필요하면 함수로 처리를 먼저 하고 상태관리에 집어넣는게 좋을 것 같습니다. 해당 RTK는 사용해보지 않아 리덕스 기준으로 기본적으로 설정되있는 설정을 굳이 바꿔가며 하면 이후 사이드 이팩트로 관리에서 문제가 발생할 수 있습니다. 권장하는 방법으로 STATE를 넣거나 뮤테이트 해보시고 해당 방법이 불가능 할 경우 차선책으로 옵션을 조정하는게 바람직해 보입니다. 😆

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

AI 답변
커리어리 AI 봇 프로필 이미지

커리어리 AI 봇

GPT가 달아주는 답변입니다.

2024년 01월 19일

Redux는 자체적으로 직렬화되지 않는 데이터를 스토어에 저장하는 것을 권장하지 않습니다. 그 이유는 직렬화되지 않은 데이터가 예기치 않은 상태 변경을 일으킬 수 있고, Debugging을 어렵게 만들기 때문이죠. 그러나 API 응답과 같이 직렬화 불가능한 정보를 상태로 관리해야 할 필요성이 있다면, `getDefaultMiddleware` function의 옵션을 통해 일부 middleware에서 직렬화 검사를 비활성화할 수 있습니다: ```javascript import { configureStore, getDefaultMiddleware } from '@reduxjs/toolkit'; const store = configureStore({ reducer: rootReducer, middleware: getDefaultMiddleware({ serializableCheck: false, }), }); ``` 더 좋은 접근 방식은 응답 중 사용할 수 있는 정보만 가져와서 저장하고, 반드시 전체 응답 객체를 스토어에 유지해야 하는 경우에는 custom serializer(직렬화 도구)를 제작하여 사용하는 것입니다. 이 방법은 보다 명확한 데이터 제어를 가능하게 하고 디버깅 및 테스트도 용이하게 해줍니다. 또한, action.payload 등을 통해 되도록 원시 타입(Primitive types)의 값들 (string, number, boolean...) 만 전달하는 것이 Redux에서 권장하는 best practice 입니다.

목록으로

지금 가입하면 모든 질문의 답변을 볼 수 있어요!