const [storageValue, setStorageValue] = useState(() => JSON.parse(localStorage.getItem('productCardsId')) || []);
const localStoreHandler = productId => {
setStorageValue(prevValue => [productId, prevValue?.[0]]);
localStorage.setItem('productCardsId', JSON.stringify(storageValue));
};
当我将setStorageValue设置为第一个值时,我只得到一个空数组。在第二次点击之后,我得到了值,但延迟了。如何在第一次点击时更新状态?谢谢。
1条答案
按热度按时间oxiaedzo1#
setStorageValue
是一个异步操作,因此localStorage.setItem('productCardsId', JSON.stringify(storageValue));
将收到第一个过时的值。有两种选择:一种是在状态更新中更新localStorage
,或者使用一个钩子来检测值的更改并相应地更新localStorage
。选项1
备选案文2