使用React/Redux,我有一个简单的反应游戏,用户响应来自多个选项的提示,我想记录响应以及它是否正确。我有一个'GAME_BEGIN'
减速像如何在REDX状态下访问数组(对象)元素
case 'GAME_BEGIN':
return {
...state,
timeRemaining: action.timeRemaining,
gameIsInProgress: true,
problems: [
{
problem: action.problem, // string
solution: action.solution, // string
incorrectResponses: action.incorrectResponses, // array of strings
}
]
};
现在我想response
和isCorrect
属性添加到的第一个问题对象上行动'GAME_SUBMIT_RESPONSE'
,然后添加一个新的问题出现的问题阵列。所以,经过几次反复(可以有很多问题),我想国家应该像
...state,
problems: [
{
problem: something, // string
solution: something, // string
incorrectResponses: something, // array of strings
response: something,
isCorrect: somethingBool
},
...
{
problem: action.problem, // string
solution: action.solution, // string
incorrectResponses: action.incorrectResponses, // array of strings
}
]
对于我可能仅通过重写整个problems
阵列添加属性的第一个问题,但如何对一旦我添加新对象?
或者我是以错误的方式思考这个问题。我也认为我可以把状态弄平,摆脱problems
阵列,在每次提交时重置问题并通过api调用将必要的数据登录到数据库。这是做事的预期方式吗?
目前尚不清楚你想要做什么。你需要回答以前的问题吗?一般情况下,商店代表您的应用程序的状态,并且您选择那是什么。如果你需要添加一个对象到数组中,或者改变其中一个元素,它就像任何平常的javascript对象一样工作。 – JulienD
嗯,我这么认为,但是例如,在'GAME_SUBMIT_RESPONSE'还原器中返回'... state,state.problems [state.problems.length - 1] .response:action.response'不起作用,我只是得到一个错误。我可以在每个响应中重写整个'problems'数组,但如果他们回答了很多问题,那么这个数组就会变大。 – TrivialCase