购物车
修改购物车里商品的数量,或删除商品。小计、运费和合计会根据购物车内容自动计算。
这段代码由 1 个文件组成。
CartPage.tsx
购物车页面
使用方法(Next.js)
在自己的项目里显示这个页面的 3 个步骤
- 1
在终端安装要用的组件和库(只需一次)
npx shadcn@latest add button
npm i lucide-react
如果项目还没有安装 shadcn/ui,先运行一次 npx shadcn@latest init
- 2
把文件粘贴到这个位置
my-app/ ├─ components/ │ └─ cart/ │ └─ CartPage.tsx ← 从上面的窗口复制的 └─ app/ └─ cart/ └─ page.tsx ← 在第 3 步创建文件夹不存在就新建。
- 3
在页面文件中导入
import CartPage from "@/components/cart/CartPage" export default function Page() { return <CartPage /> }写在 app/cart/page.tsx 中。运行 npm run dev,打开 /cart 就能看到
要点
- 1
只修改或删除列表中的某一项
修改数量时,用 map 生成一个“只有这件商品数量变了”的新列表。删除时,用 filter 生成一个“保留这件商品以外所有商品”的新列表。不要直接改动原来的列表。
- 2
合计不要存起来,每次都重新计算
小计、运费和合计不要放进 state,而是每次都根据购物车内容计算。内容一变,合计自然就对得上(存起来反而会导致数据对不上)。
- 3
准备好购物车为空时的显示
全部删除后,显示“购物车是空的”。如果只显示一个空列表和 ¥0 的合计,看起来就像坏掉了。
使用的工具
点击查看第 2 部分的比较