2 回答
TA贡献1802条经验 获得超5个赞
尝试使用setState带有函数的更新程序形式:
function handleChange(event) {
// event.target wont be available when fn is run in setState
// so we save them in our own local variables here
const { name, value } = event.target;
setValues(prev => ({
...prev,
[name]: value
}));
}
TA贡献1744条经验 获得超4个赞
你的areEqual方法转化为
仅在value更改时重新呈现我的输入。
但实际上,你handleChange的钩子函数也在发生变化。此外,您handleChange对两个输入使用相同的内容。因此,Input“记住”只有handleChange上次发生value了变化,并且由于通过闭包进行handleChange跟踪values,因此它反过来“记住”了values它的创建时间。
更改您的areEqual方法(或完全省略它)以验证 中的更改handleChange将解决您的问题。
function areEqual(prevProps, nextProps) {
return (
prevProps.value === nextProps.value &&
prevProps.handleChange === nextProps.handleChange
);
}
添加回答
举报