从我所做的所有阅读中,我可以看到在reducer中更新单个属性的全部过程是创建一个操作来更新该属性。接受的模式真的对每个财产都采取了行动吗?
例如,假设我有一个dodo减速器,其默认状态为三个不同的属性。是可以预期的模式来创建3个不同的更新操作,对于每个属性都这样,
const todo = ({
text: '',
complete: false,
assignedUser: null
}, action) => {
switch(action.type) {
case 'UPDATE_TEXT':
return {...state, text: action.payload}
case 'UPDATE_COMPLETE':
return {...state, complete: action.payload}
case 'UPDATE_ASSIGNEDUSER':
return {...state, assignedUser: action.payload}
default:
return state
}
}
如果不是对每个属性进行单独的更新操作,那么人们在做什么作为更新每个属性的模式?
答案 0 :(得分:1)
这是另一种方式,也许可以为您提供帮助:
const todo = ({
text: '',
complete: false,
assignedUser: null
}, action) => {
switch(action.type) {
case 'UPDATE':
return {...state, ...action.payload}
default:
return state
}
}
现在,您通过动作的有效负载传递的所有内容都会进入状态,例如:
const updateTodo = payload => ({type: "UPDATE", payload})
dispatch(updateTodo({
complete: true,
text: "Hello world",
assignedUser: {}
}))