我在Redux Store中有状态,我想将所有isPlaying更改为false。我不知道如何才能更好地做到这一点。这是我到目前为止所做的。
const INITIAL_STATE = {
isPlaying: true,
allLangs: [
{
shortName: 'es',
fullName: "spanish",
order: 0,
isPlaying: false
}, {
shortName: 'pt',
fullName: "portuguese",
order: 0,
isPlaying: false
},
{
shortName: 'gb',
fullName: "english",
order: 0,
isPlaying: true
}
]
}
return update(state,
{
$merge: {isPlaying: false},
allLangs: {
[0]: {
$merge: {isPlaying: false}
},
[1]: {
$merge: {isPlaying: false}
},
[2]: {
$merge: {isPlaying: false}
}
}
});
所以我的问题是:有什么方法可以比分别调用所有索引更好的方法呢?
答案 0 :(得分:0)
鉴于您当前的数据结构,如果要将{
"_id" : "Q6GinQQKKnfA7FrAT",
"instrument_token" : NumberInt(11552514),
"last_price" : 10711.8,
"buy_quantity" : NumberInt(714225),
"sell_quantity" : NumberInt(488775),
"buySellRatio" : 1.4612551787632346,
"timestamp" : "2018 07 03 07:54:52",
"oi" : NumberInt(20539500),
"oi_day_high" : NumberInt(20539500),
"oi_day_low" : NumberInt(19809750)
}
{
"_id" : "Dwez3LuqLsB6MZRnB",
"instrument_token" : NumberInt(11552002),
"last_price" : NumberInt(26329),
"buy_quantity" : NumberInt(185520),
"sell_quantity" : NumberInt(201080),
"buySellRatio" : 0.9226178635369008,
"timestamp" : "2018 07 03 07:54:52",
"oi" : NumberInt(2163040),
"oi_day_high" : NumberInt(2170680),
"oi_day_low" : NumberInt(2018440)
}
{
"_id" : "tcDfqRPk3qs2mYmow",
"instrument_token" : NumberInt(11552514),
"last_price" : 10711.95,
"buy_quantity" : NumberInt(713775),
"sell_quantity" : NumberInt(490125),
"buySellRatio" : 1.4563121652639632,
"timestamp" : "2018 07 03 07:54:53",
"oi" : NumberInt(20539500),
"oi_day_high" : NumberInt(20539500),
"oi_day_low" : NumberInt(19809750)
}
的每个实例设置为false,那么您所拥有的是正确的。根据您的用例,还有一些其他建议:
比方说,每当您将isPlaying
设置为false时,游戏结束,并且您正在开始新游戏。然后,最简单的操作可能就是直接将状态设置为isPlaying
。
这取决于您的用例,但是我的第一个直觉是您的数据结构具有重复性。您真的可以同时玩英语和西班牙语的游戏吗?如果没有,请考虑执行以下操作: const allLangs = { es:{ fullName:“西班牙语”, 顺序:0, } }
然后,在您的状态下,您将指向当前使用的语言:
initialState
以这种方式进行重构可以为您提供一个真实的来源。
答案 1 :(得分:0)
我建议您将'allLangs'数组放在单独的数组变量中,让我们说'newAllLangs'并使用map()更改'isPlaying',最后设置此'newAllLangs'到状态。像这样的东西。
我正在考虑您正在userAction.js中进行此操作。因此,假设您通过mapStateToProps获得了allLangs,并通过使用mapDispatchToProps将数据发送到userAction.js。在userAction.js中,您可以处理allLangs并将它们发送回reducer。然后reducer将根据您从userAction发送的内容更新商店。
这是理论上的部分,如果您想了解更多。您可以在小提琴中分享。