Programing

상태가 초기 상태로 초기화되지 않음

c10106 2022. 3. 11. 22:12
반응형

상태가 초기 상태로 초기화되지 않음

나는 새로운 사람이다.react-redux.

지금 나는 다음과 같은 물체를 가지고 있다.

const initialState = {
        Low: [
            {
                id: 0,
                technologyId: 0,
                technology: '',
                level: 'EASY'
            }
        ],
        Medium: [
            {
                id: 0,
                technologyId: 0,
                technology: '',
                level: 'MEDIUM'
            }
        ],
        High: [
            {
                id: 0,
                technologyId: 0,
                technology: '',
                level: 'TOUGH'
            }
        ]
    }

Now, 

    export default function QuizData(state = initialState, action) {
        switch (action.type) {
            case QUIZ_DATA:
                return {
                    ...state,
                    Low: action.data,
                    error: false,
                } 
            case RESET_SETUP_QUIZ: {
            console.log("intial state is ",  ...state);
            return {
                ...state
            }

자, 여기서 일어나는 일은 어떤 조작을 한 후에, 이 물체는 모든 열쇠가 어떤 가치를 갖는 것과 함께 변화하게 되는 겁니다.맘에 들다

그래서, 이건 바뀌었어.

{
        Low: [
            {
                id: 0,
                technologyId: 11,
                technology: 'xsxs',
                level: 'EASY'
            }
        ],
        Medium: [
            {
                id: 0,
                technologyId: 22,
                technology: 'swwsw',
                level: 'MEDIUM'
            }
        ],
        High: [
            {
                id: 0,
                technologyId: 110,
                technology: 'xsxsx',
                level: 'TOUGH'
            }
        ]
    }

자, 내가 하고 싶은 것은,

사용자가 버튼을 클릭하면 초기 상태로 변경하고 싶다.

기본값과 같아야 하므로 값을 갖지 않도록 한다.

그래서, 내가 해 본 것은

return {
   initalState
}

하지만 그 후 나는 그 일을 시도했다.object.assign.

case QUIZ_DATA:
  return Object.assign(
    {},
    state,
    {
      Low: action.data,
      error: false
    }
  )

그러나 여전히 여기서는 첫 번째 수준의 변수만 복사한다.

그래서, 나는 여전히 이것을 할 수 없다.

누가 이것 좀 도와줄래?

object.assign은 딥 카피에 도움이 되지 않는다.

딥 카피 사용을 원할 경우.

let newObj = JSON.parse(JSON.stringify(obj));

여기 newObj가 복사될 것이다.

초기 상태로 재설정하려면 다음과 같이 하십시오.

case RESET_SETUP_QUIZ: {
    return initialState;

바로 그겁니다.환원기 기능이 처음 호출되면state초기 상태가 아니라 현재 상태가 될 것이다.

의 기본 조건에 대해 어떤 것도 반환하지 않는다는 점에 주의하십시오.action.type. 상태 반환 켜기default:둘째로return { ...state, low: action.data, error: false }즉시 사용할 수 있어야 한다.

export default function QuizData(state = initialState, action) {
    switch (action.type) {
        case QUIZ_DATA:
            return {
                ...state,
                Low: action.data,
                error: false,
            } 
        case RESET_SETUP_QUIZ: {
            console.log("intial state is ",  ...state);
            return {
                ...state
            }
        }
        default: {
            return state;
        }
    }
}

이것은 잘못된 것이다.

case RESET_SETUP_QUIZ: {
        console.log("intial state is ",  ...state);
        return {
            initialState
        }

당신은 그래야 한다.

case RESET_SETUP_QUIZ: {
        console.log("intial state is ", initialState);
        return initialState;

아니면

 case RESET_SETUP_QUIZ: {
        console.log("intial state is ", initialState);
        return {
           ...initialState
        };

참조URL: https://stackoverflow.com/questions/53663301/state-is-not-getting-initialized-to-the-initial-state

반응형