当前位置: 首页 > news >正文

React从入门到精通二

React从入门到精通之购物车案例

  • 1. 购物车需求说明
    • 使用到的data list
  • 2. 项目code

1. 购物车需求说明

在这里插入图片描述

  • list data展示到列表中
  • 每个item的通过±按钮来控制购买的数据量
  • 删除按钮可以删除当前的item
  • Total Price计算当前购物车的总的价格

使用到的data list

const books = [{id: 1,name: 'introduction to algorithms',date: '2006-9',price: 85.00,count: 1},{id: 2,name: 'The Art of UNIX Programming',date: '2006-2',price: 59.00,count: 1},{id: 3,name: 'Programming pearls',date: '2008-10',price: 39.00,count: 1},{id: 4,name: 'Complete code',date: '2006-3',price: 128.00,count: 1},]  

2. 项目code

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>shop car demo</title><style>table {border-collapse: collapse;text-align: center;}thead {background-color: #f2f2f2;}td, th {padding: 10px 16px;border: 1px solid #aaa;        }</style>
</head>
<body><div id="root"></div><!-- import react dependencies --><script src="../../lib/react.js"></script><script src="../../lib/react-dom.js"></script><script src="../../lib/babel.js"></script><!-- import data --><script src="./data.js"></script><script type="text/babel">// component Appclass App extends React.Component {constructor(){super()this.state = {books: books}}// add sumincrement(index) {const newBooks = [...this.state.books]newBooks[index].count += 1this.setState({ books: newBooks })}// reduce sum decrement(index) {const newBooks = [...this.state.books]newBooks[index].count -= 1this.setState({ books: newBooks })}/*delte item from table*/deleteItem(index) {const newBooks = [...this.state.books]newBooks.splice(index, 1)this.setState({ books: newBooks })}render(){const { books } = this.statereturn (<div><table><thead><tr><td>Order</td><td>Name</td><td>Publish Date</td><td>Price</td><td>Bought Sum</td><td>Operation</td></tr></thead><tbody>{books.map((item, index) => {return (<tr key={ item.id }><td>{ index + 1 }</td><td>{ item.name }</td><td>{ item.date }</td><td>{ '$' + item.price }</td><td><button disabled={ item.count <=1 } onClick={ () => {this.decrement(index)} }>-</button>{ item.count }<button onClick={ () => {this.increment(index)} }>+</button></td><td><button onClick={ () => {this.deleteItem(index)} }>Delete</button></td></tr>)})}</tbody></table><h2>Total Price: $ {books.reduce((preValue, item) => preValue + item.count * item.price, 0)}</h2></div>)}}// create react domconst root = ReactDOM.createRoot(document.querySelector("#root"))// dom render by reactroot.render(<App/>)</script></body>
</html>
http://www.lryc.cn/news/17118.html

相关文章:

  • 【likeshop多商户】电子面单商家直播上线啦~
  • 游戏化销售管理是什么?使用CRM系统进行有什么用?
  • Mysql 索引(三)—— 不同索引的创建方式(主键索引、普通索引、唯一键索引)
  • 秒懂算法 | 基于朴素贝叶斯算法的垃圾信息的识别
  • SpringCloud - Feign远程调用
  • Eotalk Vol.03:结合 API DaaS,让使用数据更方便
  • 从零开始学习Java编程:一份详细指南
  • 电子技术——系统性分析反馈电压放大器
  • 【C语言进阶】结构体、位段、枚举、以及联合(共用体)的相关原理与使用
  • 《蓝桥杯每日一题》哈希·AcWing 2058. 笨拙的手指
  • Linux 定时任务调度(crontab)
  • C进阶:6.C语言文件操作
  • Linux环境变量
  • Kotlin-委托、代理和单例对象
  • 华为OD机试真题Python实现【报数】真题+解题思路+代码(20222023)
  • MacOS:Error message “error:0308010C:digital envelope routines::unsupported“
  • Java 异常处理,超详细整理,适合新手入门
  • 23年了,GOPATH和go.mod 还在冲突!
  • Could not connect to Redis at 127.0.0.1:6379: 由于目标计算机积极拒绝,无法连接。(极简解决办法)
  • 华为OD机试 - 优雅数组(Python)【2023-Q1 新题】
  • 【概念辨析】数组指针指针数组
  • python实战应用讲解-【语法基础篇】字典的创建及建模(附示例代码)
  • 华为OD机试真题Python实现【分糖果】真题+解题思路+代码(20222023)
  • 视频技术基础知识
  • Windows应用之——设置定时关机
  • 华为OD机试真题Python实现【 喊七】真题+解题思路+代码(20222023)
  • 国产蓝牙耳机哪个好用?国产好用的蓝牙耳机推荐
  • JAVA虚拟机JVM之内存模型
  • Java线程——常见方法
  • 机器学习:基于逻辑回归对某银行客户违约预测分析