使用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