【发布时间】:2017-06-04 16:01:16
【问题描述】:
我的redux状态如下:-
data = {"facebook":true,"twitter":false,"google":false,"instagram":false,"watsapp":false}
我将在行动中传递关键值:-("facebook","twitter")
可以说我通过了“facebook”。 然后我希望将状态更新为
{"facebook":true,"twitter":false,"google":false,"instagram":false,"watsapp":false}
这是我的减速器功能
function data = (state=initialstate,action) => {
return {...state, [action.account]=true}
}
第一次,它会给出想要的结果。
{"facebook":true,"twitter":false,"google":false,"instagram":false,"watsapp":false}
现在让我们说,我正在传递密钥“twitter”
我想要什么:
{"facebook":false,"twitter":true,"google":false,"instagram":false,"watsapp":false}
我用上面的 reducer 函数得到了什么(如预期的那样)
{"facebook":true,"twitter":true,"google":false,"instagram":false,"watsapp":false}
所以我更新了我的减速器功能如下:-
function data = (state, action) => {
Object.keys(state).forEach(function(key) {
if(key!=action.account){
state[key]=false;
} else {
state[key]=true;
}
});
return state
}
但这违背了redux 的不可变数据原则。 因为我也在使用选择器,所以它显示了一些意想不到的行为。
如何更新我的 reducer 函数,它将所有以前设置的值设置为 false 并且只将当前键设置为 true 记住 redux 的不可变数据原则
【问题讨论】:
标签: reactjs redux react-redux reselect