我在reducer中有一个不可变状态:
const initialState = fromJS({
rates:[],
fromDialogOpen: false,
mealPlans: [],
roomTypes:[],
editRateFormOpen:false,
rateToEdit:"",
selectedDate:moment().toDate(),
selectedRoomType:null,
selectedMealPlan:null
});
我做一个api调用,导致我得到一个空数组array []或对象数组
**
[
0: Object { doubleRackRate: 200, singleRackRate: 120, mealPlan: "AI", … }
1: Object { doubleRackRate: 12, singleRackRate: 1200, mealPlan: "AI", … }
2: Object { doubleRackRate: 12, singleRackRate: 12, mealPlan: "AI", … }
3: Object { doubleRackRate: 12, singleRackRate: 12, mealPlan: "AI", … }
4: Object { doubleRackRate: 12, singleRackRate: 12, mealPlan: "AI", … }
]
**,
作为action.payload发送状态更新!!
当我从API调用接收数组时,我需要将rate-状态更新为我收到的值 - 即空数组或对象数组!!
我该怎么做? 我试过了:
return Object.assign( ...state, {rates:action.payload})
但这没效果!!
答案 0 :(得分:2)
你有正确的想法,但你的语法错了。
使用Object.assign仅更改费率字段。
return Object.assign(state, {rates:action.payload})
有些人可能会认为这是非正统的,因为它直接改变了状态。
返回状态副本,仅使用扩展语法更改费率。
return { ...state, rates: action.payload }
进一步阅读:JS spread syntax
const { set } = require('immutable')
return set(state, 'rates', action.payload)