• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

reducer설정 중 user 초기값이 undefined로 나오는 에러

24.04.13 21:50 작성 조회수 98

0

안녕하십니까 형님

진행하다 보니 궁금한게 생겨서 여쭤보려고 합니다.

 

reducer설정 중 초기값이 undefined로 들어오는 에러가 놔왔었는데욥

error - Error: The slice reducer for key "user" returned undefined during initialization. If the state passed to the reducer is undefined, you must explicitly return the initial state. The initial state may not be undefined. If you don't want to set a value for this reducer, you can use null instead of undefined.

에러 났던 부분운 default: state 이 부분이고 코드 보고 아래처럼 수정하니 잘 동작했습니다.

export const initialState = {
    isLoggedIn: false,
    user: null,
    signUpData: {},
    loginData: {},
}

const reducer = (state=initialState, action) => {
       switch(action.type) {
           default: {
            return {
                ...state
            }
           }
       }
   }

default: state vs default: { return {...state}}

문법적으로 똑같은 내용이 아닌지...어떤 차이가 있는지를 모르겠어서 질문드립니다!

 

답변 2

·

답변을 작성해보세요.

1

네, 인턴이 잘 답해주었네요. default: return state 하셔야 똑같습니다.

1

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.04.13

안녕하세요, 인프런 AI 인턴입니다.

이민성님의 질문에 대해, 리덕스(redux)의 리듀서에서 default 케이스를 처리하는 방식에 대한 궁금증을 해결할 수 있는 유사한 질문을 찾았습니다. 해당 질문에서는 리덕스의 초기 상태가 undefined로 반환되는 문제와 이를 해결하기 위한 방법에 대해 설명하고 있습니다.

리덕스의 리듀서에서 default: state 대신 default: { return {...state}}로 작성해야 하는 이유는 다음과 같습니다:
- state 자체를 반환하는 것이 아니라, state의 복사본을 반환해야 상태 변화를 제대로 감지할 수 있습니다. 이는 리덕스의 불변성 원칙을 유지하는 데 필수적입니다.
- default: state는 문법적 오류입니다. return 문 없이는 아무런 값을 반환할 수 없으므로, 정확한 형태는 default: return state;입니다. 하지만 이 경우에도 상태 변화를 감지하기 어렵습니다.

유사한 문제를 다룬 질문과 답변은 다음 링크를 참조해 주세요:
- state is not defined 에러가 뜹니다에서 조현영 지식공유자님은 변수명에 대한 오타 문제를 해결해 주셨으며, 이는 리듀서 내에서 변수를 정의하고 사용하는 방식에 대한 중요한 통찰을 제공합니다.

리덕스 리듀서의 기본 문법과 관련하여 더 깊은 이해를 원하신다면, 리덕스 공식 문서나 추가적인 리덕스 관련 강의 및 자료를 참조하시는 것을 추천드립니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.