首页 > 解决方案 > 状态未初始化为初始状态

问题描述

我是新来的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
    }
  )

但仍然在这里它只复制第一级变量。

所以,我仍然无法做到这一点。

谁能帮我这个 ?

标签: javascriptreactjsreduxreact-reduxreducers

解决方案


要重置为初始状态,您所要做的就是:

case RESET_SETUP_QUIZ: {
    return initialState;

而已。在第一次调用 reducer 函数后,state将是当前状态,而不是初始状态。


推荐阅读