所以,我有一个表格状态。
const initialState = {
allTables: [],
fetching: true,
tableId: {},
};
allTables是一个包含许多表对象的状态。
allTables: Array[16]
并且每个对象都有id,current_order,表类型。
{
id: 1
type: "main"
current_order: null
}
所以,现在我所拥有的是当用户点击表格时,它会创建订单。我要添加的是,当用户单击一个表时,它会将order_id发送到reducer,并更新table对象的current_order。
case Constants.TABLE_IS_BUSY:
return { ...state, tableId: action.id }
case Constants.TABLES_NEW_ORDER_CREATED:
return Object.assign({}, state, {
tables: state.allTables.map((id) => {
if (state.allTables.id === state.tableId) {
return Object.assign({}, {
state.allTables.current_order: action.order
})
}
return state
})
})
所以为了做到这一点,我做了如上所述的减速机。单击表时,它会触发TABLE_IS_BUSY和TABLES_NEW_ORDER_CREATED。对于TABLE_IS_BUSY,我获取用户单击的表的table_id并更改stateId的值。但是对于TABLES_NEW_ORDER_CREATED,它并没有改变current_user的值......我怎么能正确地做到这一点?
提前致谢..
答案 0 :(得分:1)
你不应该有:
case Constants.TABLES_NEW_ORDER_CREATED:
return Object.assign({}, state, {
tables: state.allTables.map((table) => {
if (table.id === state.tableId) {
return Object.assign({}, table, {
current_order: action.order
})
}
else {
return Object.assign({}, table)
}
})
})