360 Secure SkillHub
360 安全技能中心

Cart Management

该 Skill 提供 React 购物车状态管理代码模式:在 CartContext 中集中去重、用 localStorage 持久化购物车与 ID 列表、通过 map 更新数量,并列出常见反模式和后端校验建议;不包含完整组件代码、测试或后端实现。

konscious0beast
konscious0beast
热度 74.68
最近更新 2026-05-11 17:26:48
分类:开发依赖:纯提示词应用场景:代码生成 / 调试排错

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add cart-management
Metadata
name
cart-management
description
React cart state management: duplicate prevention, localStorage persistence, CartContext patterns. Use when building or fixing shopping carts, product lists, or cart-related UI.

Cart Management Skill

Patterns for React cart state: duplicate prevention, persistence, context design.

Duplicate Prevention

  • Track product IDs in CartContext (separate state or derived from cartItems)
  • Check productIdsInCart.includes(item.id) before add
  • Centralize logic in context, not in ProductCard or child components

Persistence (localStorage)

  • Initialize cart state from localStorage.getItem('cart') on mount
  • Persist on every add/remove: localStorage.setItem('cart', JSON.stringify(cartItems))
  • Sync productIdsInCart if used: localStorage.setItem('cart_ids', JSON.stringify(ids))
  • Prevents duplicates across sessions (refresh, new tab)

CartContext Pattern

const addToCart = (item: CartItem) => {
  if (!productIdsInCart.includes(item.id)) {
    setCartItems(prev => [...prev, item]);
    setProductIdsInCart(prev => [...prev, item.id]);
    localStorage.setItem('cart', JSON.stringify([...cartItems, item]));
  }
};

Anti-Patterns

  • Don't add to cart in useEffect on ProductCard mount (causes duplicates)
  • Don't duplicate logic in multiple components – use context
  • Add backend validation as fallback for data integrity

Quantity Updates

For same-product quantity: use cartItems.map() to update item.quantity, don't create duplicate entries.