在我的一个应用程序的reducer中,我需要替换整个数组。因此,我这样写我的减速器:
const arrayReducerDefaultState = []
const arrayReducer = (state = arrayReducerDefaultState, action) =>{
switch(action.type){
case "CHANGE_ARRAY":
return{
...state,
array: action.array
}
default:
return state
}
}
export default arrayReducer
当动作被调用时,我看到数组正在更新(使用Redux Dev Tools)。但是,当'array'值更新时,应用程序不会再次渲染。
我如何改变我的减速器,这样我可以继续替换我的整个数组,同时允许应用程序在存储更改时重新渲染。
编辑1:
const arrayReducerDefaultState = {
array: []
}
const arrayReducer = (state = arrayReducerDefaultState, action) =>{
switch(action.type){
case "CHANGE_ARRAY":
return {
...state,
array: action.array
}
default:
return state
}
}
因为我在处理默认状态为数组时遇到了问题,所以我使它成为一个包含数组的对象。'array'现在不是未定义的,但改变它仍然不会重新渲染应用程序。
返回状态为数组,但您在"CHANGE_ARRAY"
情况下返回对象。
const arrayReducerDefaultState = []
const arrayReducer = (state = arrayReducerDefaultState, action) =>{
switch(action.type){
case "CHANGE_ARRAY":
return action.array
default:
return state
}
}
export default arrayReducer
实际上你可以在选择器中出错。
PS动作具有结构类对象,其中必须是类型(必需),有效载荷(最佳)-有你的数据,元(最佳)-另一个额外的信息
上述解决方案有效,但我的问题在其他地方。