每次如何getItem,值为changed/updated。本地存储,JS
How to getItem every time, value is changed/updated. localStorage, JS
我有一个购物车,我可以在其中添加和删除商品,并将数据保存在 localStorage
。
我这样添加我的项目:
const addItemToCart = (item: Object) => {
if (typeof window === 'undefined') return;
let myCart = JSON.parse(localStorage.getItem('myCart') || '[]');
myCart.push(item);
localStorage.setItem('myCart', JSON.stringify(myCart));
};
购物车是不同的组件,每次我将商品添加到购物车时都需要调用那个组件getItem()
。
有没有办法在 localStorage 中查看属性?因为我看到的唯一方法是创建一些上下文。
localStorage 没有任何状态,所以你必须创建自己的带有状态的变量,这样每次更新 localStorage 时,你也会更新状态变量:
const [cart, setCart] = useState([])
const addItemToCart = (item: Object) => {
if (typeof window === 'undefined') return;
let myCart = JSON.parse(localStorage.getItem('myCart') || '[]');
myCart.push(item);
// As you update localStorage, update the state as well
localStorage.setItem('myCart', JSON.stringify(myCart));
// Update the state with the array
setCart(myCart)
};
您可以创建带有侦听器的自定义事件以影响状态更改。
在 adding/removing 项 (setItem) 之后,您可以触发自定义事件:
...
// As you update localStorage, update the state as well
localStorage.setItem('myCart', JSON.stringify(myCart));
// fired custom event on localStorage data changed
const event = new CustomEvent('localdatachanged');
document.dispatchEvent(event);
// Update the state with the array
...
并在您想要的位置添加事件侦听器:
document.addEventListener('localdatachanged', () => {
// handler
});
在这种情况下,您可以在不同的地方触发自定义事件,但只能在一个地方处理更改。
我有一个购物车,我可以在其中添加和删除商品,并将数据保存在 localStorage
。
我这样添加我的项目:
const addItemToCart = (item: Object) => {
if (typeof window === 'undefined') return;
let myCart = JSON.parse(localStorage.getItem('myCart') || '[]');
myCart.push(item);
localStorage.setItem('myCart', JSON.stringify(myCart));
};
购物车是不同的组件,每次我将商品添加到购物车时都需要调用那个组件getItem()
。
有没有办法在 localStorage 中查看属性?因为我看到的唯一方法是创建一些上下文。
localStorage 没有任何状态,所以你必须创建自己的带有状态的变量,这样每次更新 localStorage 时,你也会更新状态变量:
const [cart, setCart] = useState([])
const addItemToCart = (item: Object) => {
if (typeof window === 'undefined') return;
let myCart = JSON.parse(localStorage.getItem('myCart') || '[]');
myCart.push(item);
// As you update localStorage, update the state as well
localStorage.setItem('myCart', JSON.stringify(myCart));
// Update the state with the array
setCart(myCart)
};
您可以创建带有侦听器的自定义事件以影响状态更改。
在 adding/removing 项 (setItem) 之后,您可以触发自定义事件:
...
// As you update localStorage, update the state as well
localStorage.setItem('myCart', JSON.stringify(myCart));
// fired custom event on localStorage data changed
const event = new CustomEvent('localdatachanged');
document.dispatchEvent(event);
// Update the state with the array
...
并在您想要的位置添加事件侦听器:
document.addEventListener('localdatachanged', () => {
// handler
});
在这种情况下,您可以在不同的地方触发自定义事件,但只能在一个地方处理更改。