2016-12-03 210 views
1

我似乎无法重置默认状态;我怎么做?我试过这个,但它所做的只是添加state来声明并将其称为undefined。如何将状态重置为初始状态?

const initialState = { 
    name: null, 
    coins: 0, 
    image: null, 
}; 

export default function reducer(state = initialState, action = {}) { 
    switch (action.type) { 
    case types.ADD_GROUP_COINS: 
     return { 
     ...state, 
     coins: state.coins + action.coins 
     }; 
    case types.DELETE_GROUP: 
     return { 
     state: undefined 
     }; 
    default: 
     return state; 
    } 
} 
+0

'case types.DELETE_GROUP: return initialState;'不工作,或者那不是你想要的? – Aurora0001

+0

那会给我'state:{state:{initialState}}'来代替。因为它将它分配给'state'在'state'里面' –

+0

我不认为它会 - 'return {state:initialState}'会这样做 - 'return initialState'应该按预期工作。 – Aurora0001

回答

2

的状态恢复到initialState,只需return initialState,像这样:

case types.DELETE_GROUP: 
    return initialState; 

请记住,在减速,您返回是新的状态的对象。你不需要把它包起来的另一个对象,这样的:

return { 
    state: ... 
} 

这会给你一个名为您的状态state属性,这是不是你所需要的东西。

From the documentation

减速器是一个纯粹的函数,它先前的状态和动作,和返回下一状态。

很容易混淆这个,所以要小心!如果您仍然不确定,请查看您的default案例:您将返回原来的state变量作为新状态,而不是{ state: state }您基本上使用当前DELETE_GROUP处理程序执行此操作。

+1

谢谢你的详细答案!奇迹般有效 –