React实现简易购物车(全选,删除,数量加减,总价,总数量)

这篇博客介绍了如何在React中实现购物车的功能,包括商品全选、删除、数量加减、总价计算和总数量显示。作者通过App.js、ComA.js和ComB.js组件来分别处理不同的逻辑,并提供了相关的代码示例和CSS样式。虽然编辑功能尚未实现,但这是一个初学者了解React组件化开发和状态管理的好例子。
摘要由CSDN通过智能技术生成

React实现简易购物车(全选,删除,数量加减,总价,总数量)

实现效果
组件相关目录
框起来的是使用到的
表格是放于ComA.js里处理渲染,总价和总数量放于ComB.js里处理渲染

App.js代码

import './App.css';
import ComA from "./components/ComA"
import ComB from "./components/ComB"
import React from "react"

class App extends React.Component{
   
  constructor(){
   
    super()
    this.state={
   
      booklist:[
        {
   
          id:1,
          bookName:"小红书",
          bookPrice:18,
          bookNum:1,
          checked:false
        },{
   
          id:2,
          bookName:"小兰书",
          bookPrice:15,
          bookNum:1,
          checked:false
        },{
   
          id:3,
          bookName:"小黑书",
          bookPrice:20,
          bookNum:1,
          checked:false
        },{
   
          id:4,
          bookName:"小白书",
          bookPrice:12,
          bookNum:1,
          checked:false
        }
      ],
      totalPrice:0,
      totalNum:0,
      allChecked:false
    }
  }
  //子组件ComA减数量按钮操作
  mulNum(i){
   
    let list = [...this.state.booklist]
    list[i].bookNum--;
    this.setState({
   
      booklist:list
    })
    this.getToTal()
  }
  //子组件ComA加数量按钮操作
  addNum(i){
   
    let list = [...this.state.booklist]
    list[i].book
你可以使用React的状态管理来实现价格的加减全选反选计算选中数量。下面是一个简单的实现示例: ```javascript import React, { useState } from "react"; function PriceCalculator() { const [items, setItems] = useState([ { id: 1, name: "Item 1", price: 10, checked: false }, { id: 2, name: "Item 2", price: 20, checked: false }, { id: 3, name: "Item 3", price: 30, checked: false } ]); const [selectAll, setSelectAll] = useState(false); const handleItemChange = (item) => { const newItems = [...items]; const index = newItems.findIndex((i) => i.id === item.id); newItems[index] = { ...newItems[index], checked: !newItems[index].checked }; setItems(newItems); }; const handleSelectAllChange = () => { const newItems = [...items]; newItems.forEach((item) => (item.checked = !selectAll)); setItems(newItems); setSelectAll(!selectAll); }; const getTotalPrice = () => { const totalPrice = items.reduce((acc, item) => { if (item.checked) { return acc + item.price; } return acc; }, 0); return totalPrice; }; const getSelectedCount = () => { const selectedCount = items.reduce((acc, item) => { if (item.checked) { return acc + 1; } return acc; }, 0); return selectedCount; }; return ( <div> <table> <thead> <tr> <th> <input type="checkbox" checked={selectAll} onChange={handleSelectAllChange} /> </th> <th>Item Name</th> <th>Price</th> </tr> </thead> <tbody> {items.map((item) => ( <tr key={item.id}> <td> <input type="checkbox" checked={item.checked} onChange={() => handleItemChange(item)} /> </td> <td>{item.name}</td> <td>${item.price}</td> </tr> ))} </tbody> </table> <div>Total Price: ${getTotalPrice()}</div> <div>Selected Count: {getSelectedCount()}</div> </div> ); } ``` 在这个实现中,我们使用了React的`useState`来管理状态。`items`数组包含每个项目的数据,包括`id`、`name`、`price`和`checked`属性。`selectAll`状态表示是否全选。 `handleItemChange`函数用于处理单个项目的选择更改。它创建一个新的`items`数组,并将更改后的项目替换原始数组中的项目。最后,它将新的`items`数组设置为状态。 `handleSelectAllChange`函数用于处理全选/反选更改。它创建一个新的`items`数组,并将`checked`属性设置为`!selectAll`。最后,它将新的`items`数组和新的`selectAll`状态设置为状态。 `getTotalPrice`函数使用`reduce`方法计算所有选中项目的总价。 `getSelectedCount`函数使用`reduce`方法计算选中的项目数。 在组件的返回值中,我们使用`<table>`元素显示项目列表,并使用`<input>`元素来显示选择框。`<div>`元素用于显示总价和选中的项目数。 此实现仅用于演示目的,您需要根据自己的需求进行调整和修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值