为什么useReducer里的dispatch不更新状态?
在用useReducer处理表单输入时遇到问题,输入框的值没反应。写了个handleChange函数,通过dispatch(‘UPDATE_FIELD’)传递value,但状态一直没变。
试过检查action.type和初始状态结构,控制台也没报错。这是我的代码:
const [state, dispatch] = useReducer((state, action) => {
switch(action.type) {
case 'UPDATE_FIELD':
return { ...state, [action.field]: action.value }; // 这里可能有问题?
default:
return state;
}
}, { name: '' });
function handleChange(e) {
dispatch({
type: 'UPDATE_FIELD',
value: e.target.value // 没有传递field参数
});
}
输入框绑定了state.name,但打字时值就是没更新,搞不明白哪里漏了
记得input加上name属性,比如
name="name",不然还是白搭。