const [userOrderCollection, setUserOrderCollection] = useState([{
url: null
}]);
const onAddedUserOrder = url => {
if (userOrderCollection[0].url === url) return;
else {
setUserOrderCollection([{ ...userOrderCollection,
url
}]);
console.log(userOrderCollection)
}
};
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
但是,该行仅添加一次,第一次单击时,控制台中出现一个空数组,只有第二次单击时,才会触发添加...
您实际上并没有在数组中添加任何内容,而是不断地创建单个元素的数组。此外,此时控制台日志不会显示更新状态。
尝试这个:
const [userOrderCollection, setUserOrderCollection] = useState([]);
const onAddedUserOrder = url => {
if (userOrderCollection.find(user => user.url === url)) return;
else {
setUserOrderCollection(prev => ([ ...prev, { url } ]));
}
};
如果您想在更新后查看状态,则应在 useEffect
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句