react-native - 如何正确操作 Reducer 内部的状态
问题描述
我的减速器内部有以下情况。当用户回答问题时触发。当用户回答问题时,需要将其从嵌套数组中移除。
示例问题对象(这些在数组中)
{
"title": "Quick Questions",
"questions": [
"title": "Hello?"
"answers" [ /*... array of answers in here */ ]
]
}
我的减速机案例
case ANSWER_QUESTION:
// The 0s here would be dynamically populated
state.questionGroups[0].questions.splice(0, 1)
return Object.assign({}, {
...state,
})
但是,这里我直接操作状态,我知道这是不正确的,并且会导致 redux 无法正确更新状态以使我的组件重新渲染。
这样做的正确方法是什么?
编辑:这可能是也可能不是我的组件不重新渲染的原因。这可能与 usingconnect()
仅适用于浅比较的事实有关,对吗?
解决方案
每次你应该返回一个新对象。您可以轻松地使用 ES6 功能。
case ANSWER_QUESTION:
return {
...state,
questionGroups[0]: [...state.questionGroups[0].questions.slice(0, action.payload), ...state.questionGroups[0].questions.slice(action.payload + 1)]
}
推荐阅读
- css - 如何删除 CSS Grid 中未使用的列/行
- android - Kotlin Flow:当 Fragment 变得不可见时取消订阅 SharedFlow
- c++ - 复数分配似乎不再起作用
- ruby - 红宝石中这是什么?没有大括号的哈希?
- javascript - 什么是 JavaScript 中的“你的存在”API?
- python - 如何使用apply一次创建多个列?
- image-processing - 主动 vs. 专注 vs. 机器视觉
- c++ - c++中的转换器扩展
- django-rest-framework - 如何在POST请求中通过邮递员发送数组
- javascript - 我试图让我的三角形“鸭嘴”与我的脸的宽度成比例,我该怎么做?