[英]How to properly update state in react in hooks?
我正在尝试将项目推送到 state 中的数组,但它不起作用。 这是我的代码。
const [features, setFeatures] = useState([''])
const addFeature = (event)=>{
event.preventDefault();
let featuresClone = features;
featuresClone.push('');
setFeatures(featuresClone);
console.log(featuresClone, fetaures);
}
这是更新 state 的 function。 在此处的日志中,功能已更新。 但是,当我像这样使用 useEffect 时,
useEffect(()=>{
console.log(features)
},[features])
它不会记录功能,这意味着功能不会更新。
我究竟做错了什么?
不要直接改变 state,而是这样做:
const addFeature = (event)=>{
event.preventDefault();
let featuresClone = [...features];
featuresClone.push('');
setFeatures(featuresClone);
console.log(featuresClone, fetaures);
}
您可以访问上一个 state 并更新 state,如下所示,
const addFeature = (event)=>{
event.preventDefault();
setFeatures(prev => [...prev, '']);
}
您的 featuresClone 不是克隆,而是同一个列表,因为与原始整数不同,列表是通过引用而不是值传递的。
使用: let featuresClone = [...features,''];
克隆它并添加值
所以你也可以避免featuresClone.push('');
因为使用 [].push,您可能会修改仅通过引用传递的列表。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.