Reactjs 如何在redux状态下访问数组(对象)元素
使用React/Redux,我有一个简单的React游戏,其中用户响应来自多个选项的提示,我想记录响应以及它是否正确。我有一个Reactjs 如何在redux状态下访问数组(对象)元素,reactjs,redux,Reactjs,Redux,使用React/Redux,我有一个简单的React游戏,其中用户响应来自多个选项的提示,我想记录响应以及它是否正确。我有一个“游戏开始” case 'GAME_BEGIN': return { ...state, timeRemaining: action.timeRemaining, gameIsInProgress: true, problems: [ { problem: action.problem, // string
“游戏开始”
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
}
]
};
现在我想为action上的第一个问题对象添加response
和isCorrect
属性“GAME\u SUBMIT\u response”
,然后向problems数组添加一个新问题。所以经过几次迭代(可能会有很多问题),我认为状态应该是这样的
...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
}
]
对于第一个问题,我可能只需重写整个问题
数组就可以添加属性,但一旦添加新对象又如何
还是我想的不对。我还认为我可以将状态平坦化,完全消除
问题
数组,在每次提交时重置问题,并通过api调用将必要的数据记录到DB中。这是你想要的做事方式吗?先复制你的状态怎么样
let newState = {...state};
然后像任何其他JS对象一样更新其中一个元素/值
newState.problems[2].response = 42;
那你还吗
return newState;
减速机只是一个函数,您不必立即返回。一行代码并非不可能,但很可能不可读(
slice
,concat
,…)。不清楚您要做什么。你需要前面问题的答案吗?通常,存储区表示应用程序的状态,您可以选择该状态。如果您需要向数组中添加一个对象,或者对其中一个元素进行变异,它的工作原理与任何常见的javascript对象一样。嗯,我也这么认为,但例如,返回…state,state.problems[state.problems.length-1]。响应:action.response
在游戏中提交\u response
reducer不起作用,我只是得到一个错误。我可以在每个回答中重写整个问题
数组,但如果他们回答了很多问题,那就太大了。唉,我是个白痴,这可能是我应该考虑的第一件事。。。谢谢