javascript - LocalStorage 在 NEXT.js 的第一个渲染中是空的

标签 javascript reactjs next.js e-commerce react-context

我用 NextJS 创建了一个购物车并且它工作正常,但是当我尝试控制台记录我的购物车的长度时,在第一个渲染中它看起来是空的,所以它给我带来了很多问题。

    const initialState = {};
  const [cart, setCart] = useState(initialState);

  useEffect(() => {
    const cartData = JSON.parse(localStorage.getItem("cart"));
    if (cartData) {
      setCart(cartData);
    }
  }, []);  

  useEffect(() => {
      localStorage.setItem("cart", JSON.stringify(cart));

  }, [cart]);

所有购物车方法(如 DeleteCart、AddToCart 等)都可以正常工作。 有什么想法吗?

最佳答案

您“几乎”循环了这两个 useEffect。试试这个:

  const initialState = {};
  const [cart, setCart] = useState(initialState);

  useEffect(() => {
    const cartData = JSON.parse(localStorage.getItem("cart"));
    if (cartData) {
      setCart(cartData);
    }
  }, []);  

  useEffect(() => {
      if(Object.keys(cart).length > 0){
          localStorage.setItem("cart", JSON.stringify(cart));
      {
  }, [cart]);

关于javascript - LocalStorage 在 NEXT.js 的第一个渲染中是空的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73899136/

相关文章:

javascript - Knockout 将 2 个链接绑定(bind)到不同的 View 并切换模型 View

reactjs - React AWS Amplify S3 Storage.put() No Credentials 错误

javascript - 访问内联 SVG

javascript - Next.js 中的条件重定向

javascript - 将字符串转换为 int 时添加总值时出现问题

javascript - Push方法插入嵌套记录

javascript - 合并两个数组并在适当的位置修改它们(javascript)

javascript - 原因 : `object` ("[object Date]") cannot be serialized as JSON. 请只返回 JSON 可序列化数据类型

javascript - Next.JS 与 framer-motion 不会更改导航内容

javascript - 为什么 html 不附加到 div 中?