【发布时间】:2022-01-11 20:48:34
【问题描述】:
我在访问 useReducer 的第三个参数中的 localstorage 时遇到问题,因为它是惰性初始值,以从 localstorage 获取购物车项目。有人可以帮忙吗?我需要访问本地存储,以便“MedicineToBuy”的购物车在页面重新加载后保持不变。
import React, { useState, createContext, useReducer, useEffect } from 'react'
import { cartReducer } from 'reducers/CartReducers'
export const CartStates = createContext()
export const CartProvider = props => {
const [cartVisibile, setCartVisible] = useState(false)
const [medicineToBuy, dispatch] = useReducer(cartReducer, [],function(){
const storageData = localStorage.getItem('Cart');
return storageData ? JSON.parse(storageData) : [];
})
useEffect( () => {
localStorage.setItem('Cart', JSON.stringify(medicineToBuy))
}, [medicineToBuy] )
const value = {
visibility: [cartVisibile, setCartVisible],
itemsInCart: [medicineToBuy],
dispatch: dispatch,
}
return <CartStates.Provider value={value}>{props.children}</CartStates.Provider>
}
【问题讨论】:
标签: reactjs next.js local-storage use-reducer