useReducer 中如何正确更新嵌套对象的状态?
我在用 useReducer 管理表单状态,状态里有个嵌套对象,每次想改里面的某个字段,结果整个对象都被替换了,其他字段就丢了。试过用展开运算符,但好像没生效。
比如我的 state 是 { user: { name: '', email: '' } },现在只想更新 name,该怎么写才不会清掉 email?
const reducer = (state, action) => {
switch (action.type) {
case 'UPDATE_NAME':
return { ...state, user: { name: action.payload } }; // 这样写 email 就没了
default:
return state;
}
};
记住,更新嵌套对象时要层层展开。就这么简单。