这里是一些带有两个输入字段和两个不同处理程序的简化组件:
const component = ({ data, onUpdate }) => {
const handleChangeName = useCallback(e => {
onUpdate({ ...data, name: e.target.value });
}, [data],
);
console.log('1 here is data with updated name', data);
const handleChangeSomeProp = useCallback(anotherProp => {
console.log('2 here is data with empty name', data);
onUpdate({ ...data, anotherProp: anotherProp });
}, [data],
);
... some UI components
}
data
并且第一个字段再次变为空< /li>
所以问题是为什么 useCallback 使用旧值以及如何解决这个问题。
答案 0 :(得分:0)
因为它记住了
您可以使用 useRef
解决此问题,但最好修复您的钩子重新渲染过程