react做购物车的功能
父组件
import React, { Component } from 'react'
import Lists from '../components/Lists' export default class Cart extends Component { // 数据 状态
state = {
carts: [
{ id: 1, name: '苹果11', price: 10, num: 1 },
{ id: 2, name: '小米10', price: 20, num: 1 },
{ id: 3, name: '华为meta40', price: 30, num: 1 }
]
} render() {
return (
<div>
{/* 功能组件 */}
<Lists carts={this.state.carts} handlerCartNum={this.handlerCartNum.bind(this)} />
</div>
)
} handlerCartNum(index, flag = 'incr') {
let carts = this.state.carts if ('incr' === flag) {
carts[index].num++
/* this.setState({
carts
}) */
/* this.setState(state=>{
return {
carts
}
}) */
} else {
// splice删数组中的数据影响原数组
carts.splice(index, 1)
} this.setState(state => ({ carts }))
}
}
子组件
import React, { Component } from 'react'
import '../styles/lists.css' import PropTypes from 'prop-types' export default class Lists extends Component { static propTypes = {
carts: PropTypes.arrayOf(PropTypes.shape({
id: PropTypes.number,
name: PropTypes.string,
num:PropTypes.number
}))
} render() {
let { carts } = this.props
return (
<ul>
{
carts.map((item, index) => (
<li key={item.id}>
<span>ID:{item.id}</span>
<span>名称:{item.name}</span>
<span>价格:{item.price}</span>
<span>数量:
<button onClick={this.incr.bind(this, index)}>+</button>
{/* <button onClick={() => this.incr(index)}>+</button> */}
{item.num}
<button onClick={this.decr.bind(this, index)}>-</button>
</span>
<span>小计:{item.num * item.price}</span>
</li>
))
}
</ul>
)
} incr(index) {
// 调用父级中的props传入的函数方法
this.props.handlerCartNum(index)
} decr(index) {
// 调用父级中的props传入的函数方法
this.props.handlerCartNum(index, 'decr')
} }
react做购物车的功能的更多相关文章
- 4-13 Webpacker-React.js; 用React做一个下拉表格的功能: <详解>
Rails5.1增加了Webpacker: Webpacker essentially is the decisions made by the Rails team and bundled up i ...
- 非node环境下的vue.js 实现简单的购物车计算功能 样式请无视
都说vue的双向数据绑定好用,自己用了下,感觉做购物车没想象中好用.自己的实现如下: <!DOCTYPE html> <html lang="en"> &l ...
- python3 练习题(用函数完成登录注册以及购物车的功能)
''' 用函数完成登录注册以及购物车的功能 作业需求: 1,启动程序,用户可选择四个选项:登录,注册,购物,退出. 2,用户注册,用户名不能重复,注册成功之后,用户名密码记录到文件中. 3,用户登录, ...
- 【SSH网上商城项目实战17】购物车基本功能的实现
转自:https://blog.csdn.net/eson_15/article/details/51418350 上一节我们将商品的详细页面做完了,并使用了Hibernate的二级缓存加载详细页面来 ...
- react做股票、期货交易遇到的问题(不完全是react)及解决方法。
公司项目主要是做股票及期货行情展示及交易,h5相应的做了一些功能---可以看行情图及模拟交易,实盘交易存在一定的风险,老板希望做自己的产品,这样h5就尴尬了,不过没关系,项目里还是有一定技术含量的-- ...
- JS实现购物车动态功能
整理了一下当时学js写的一些案例,觉得购物车功能在一般网站比较常见且基础,现在把它整理出来,需要的小伙伴可以参考一下. 该案例购物车主要功能如下: 1. 商品单选.全选.反选功能 2. 商品添加.删除 ...
- spring boot:用rocketmq消息订阅实现删除购物车商品功能(spring boot 2.3.3)
一,为什么要使用消息队列实现删除购物车商品功能? 消息队列主要用来处理不需要立刻返回结果的业务, 常见的例子: 用户在下单后,要清除原购物车中的商品, 这个处理过程不需要马上实现也不需要返回结果给用户 ...
- 原生JS实现购物车结算功能代码+zepto版
html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3 ...
- React Native移动框架功能研究
React Native移动框架功能研究 此篇只研究React Native框架的功能. 一.React Natvie是什么 React Native是使用React(或者说JS)来开发原生APP的框 ...
- html5与js关于input[type='text']文本框value改变触发事件一些属性的区别oninput,onpropertychange,onchange和文本框的value点击全选状态onclick="select();"。做购物车页面时会要用到。
关于input[type='text']文本框value改变触发事件一些属性的区别oninput,onpropertychange,onchange和文本框的点击全选状态onclick="s ...
随机推荐
- 跨域是什么?Vue项目中你是如何解决跨域的呢?
一.跨域是什么 跨域本质是浏览器基于同源策略的一种安全手段 同源策略(Sameoriginpolicy),是一种约定,它是浏览器最核心也最基本的安全功能 所谓同源(即指在同一个域)具有以下三个相同点 ...
- Python数据分析 Series 笔记
002,pandas介绍 003,Series创建 导入Pandas Series 是一种类似于一维数组的对象,由下面两个部分组成: values:一组数据(ndarray类型) index:相关的数 ...
- async与await暂停作用
1. async function Request () { await new Promise(res => { setTimeout(() => { console.log(1) re ...
- verilog中端口定义方式以及如何使用变量
一.module端口定义方式 目前有两种方式能够对module端口进行定义, 第一种是我目前使用比较多的,把I/O说明写在端口声明语句里,方式A: 1 module block( 2 input a, ...
- 力扣532(java&python)-数组中的 k-diff 数对(中等)
题目: 给你一个整数数组 nums 和一个整数 k,请你在数组中找出 不同的 k-diff 数对,并返回不同的 k-diff 数对 的数目. k-diff 数对定义为一个整数对 (nums[i], n ...
- 盒马新零售基于DataWorks搭建数据中台的实践
大家好,我叫许日花名欢伯,在2016年盒马早期的时候,我就转到了盒马的事业部作为在线数据平台的研发负责人,现在阿里云的计算平台负责DataWorks的建模引擎团队.今天的分享内容也来源于另一位嘉宾李启 ...
- 那些你不知道的TCP冷门知识!
简介: 最近在做数据库相关的事情,碰到了很多TCP相关的问题,新的场景新的挑战,有很多之前并没有掌握透彻的点,大大开了一把眼界,选了几个案例分享一下. 最近在做数据库相关的事情,碰到了很多TCP相关的 ...
- es实战-使用IK分词器进行词频统计
简介:通过IK分词器分词并生成词云. 本文主要介绍如何通过 IK 分词器进行词频统计.使用分词器对文章的词频进行统计,主要目的是实现如下图所示的词云功能,可以找到文章内的重点词汇.后续也可以对词进行 ...
- 拒绝双写:巧用Lindorm数据订阅
简介: 本文介绍了双写场景的一致性问题,详细介绍了三种解决方案,并针对DB->Binlog->Kafka方案给出了Lindorm数据订阅的最佳实践 双写问题介绍 双写问题(Dual Wr ...
- (数据科学学习手札160)使用miniforge代替miniconda
本文已收录至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 大家好我是费老师,conda作为Python数据科学领域 ...