博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一起来看React(购物车)
阅读量:5882 次
发布时间:2019-06-19

本文共 2177 字,大约阅读时间需要 7 分钟。

这两天有点感冒。。。。

就没有提前更新

今天来简单地介绍下购物车吧

有人会说你这一步一步的功能少点,请耐心往后看功能得有串联性 我们要一步一步来

购物车主要功能包含:{获取数据->渲染页面->点击增加/减少数量->单选按钮-->全选按钮-->页面跳转如(跳转到我的页面,购物车页面等等)

今天主要说下点击增加/减少 和 按钮吧

首先我们肯定是要获取数据的:

constructor(props){super(props)this.state={    data:[]}  }import axios from "axios";componentDidMount(){      axios.get("http://xxxx.xxxxx").then(res=>{consoel.log(res)this.setState({    data:res.data})})}复制代码

在我们获取到数据之后我们要进行页面的渲染

{this.state.data.map((item,index)=>{return(
进行页面渲染......
)})}
复制代码

当我们基础渲染了之后就该进行功能的书写了.通常我们的 数量在数据内名称为count 价格名称为price 我们也用这两个表达吧 现在开始做点击增加数量和减少数量

这个Button是antd的样式使用时需要提前引入 之后页面也需要引入例如:import { Button } from "antd";当我们点击增加的时候我们去调用add这个函数同理点击减少时调用reduce点击时传过去的index是我们的下标复制代码

我们先来写add的(增加的)

add(index){//获取我们的index    let data=this.state.data定义data等于我们的总数据data[index].count++//自增1this.setState({data:data})赋值简单来说就是 获取->增加->赋值 的操作}复制代码

减少其实和删除区别不大就是多了一层判断 毕竟商品不能买0个

reduce(index){//获取我们的index    let data=this.state.data定义data等于我们的总数据if(data[i].count>1){data[index].count--}//自增1this.setState({data:data})赋值简单来说就是 获取->减少->赋值 的操作}复制代码

之后就是我们的单选框了也就是每个商品前面的input 我们每个的input需要绑定一下我们的checked属性

我们要在获取data时加上一步操作让他的每一项data都有一个checked为false(为了方便后续代码的操作)

componentDidMount(){      axios.get("http://xxxx.xxxxx").then(res=>{for(let i=0;i

单input框操作

一个checkbox类型的input    当改变时调用dan这个函数(最好别用onClick会报错) checked中的item是每一项this.state.data的选中状态dan(i){let data=this.state.data//获取我们的总数据-->datadata[i].checked=!data[i].checked//点击时true和false的切换this.setState({data:data})}复制代码

之后是我们的全选框作用是:点击时全部选中

我们需要在上边的state中设置一个quan为false当我门点击时调用quan这个函数quan(){let data=this.state.datalet quan=this.state.quanquan=!quanfor(let i=0;i

我们已经大体完成了

增加/减少数量

单选/全选的基础

接下来我们来做--->价格和当单选全部选中时全选自动选中 和缺少任何一个或多个时全选自动不选中

再求总价时我们要先在state中定义一个sumprice=0是我们的初始总价

sumprice(){let sum=0;let data=this.state.datafor(let i=0;i

这个做好后我们要在增加...减少...单选...全选..删除后边都添加上this.sumprice() 我们每做到和价格或数量或选中有关时都获取到价格并且输出到页面上来

今天的最后一步

价格和当单选全部选中时全选自动选中 和缺少任何一个或多个时全选自动不选中

我们只添加一个ever在dan这个函数里

dan(i){let data=this.state.data//获取我们的总数据-->datadata[i].checked=!data[i].checkedlet every=data.every((item,index)=>{    return item.checked==true;})//点击时true和false的切换this.setState({data:data,quan:every})}复制代码

转载地址:http://iktix.baihongyu.com/

你可能感兴趣的文章
(hdu 简单题 128道)平方和与立方和(求一个区间的立方和和平方和)
查看>>
Linux中下载,压缩,解压等命令
查看>>
在Linux命令行下发送html格式的邮件
查看>>
说说PHP中foreach引用的一个坑
查看>>
基于express框架的应用程序骨架生成器介绍
查看>>
Spring学习11-Spring使用proxool连接池 管理数据源
查看>>
2016第6周五
查看>>
ASP.NET 免费开源控件
查看>>
面向对象葵花宝典阅读思维导图(二)
查看>>
volatile关键字与线程间通信
查看>>
优秀大数据GitHub项目一览
查看>>
WPF 窗体显示最前端
查看>>
tit.Atitit. http 代理原理 atiHttpProxy 大木马 h
查看>>
TCP/IP详解学习笔记(8)-DNS域名系统
查看>>
WPF 之 布局(一)
查看>>
Wireshark设置interface 时提示“There are no interfaces on which a capture can be done ”
查看>>
Android Studio使用SVN,与eclipse共同开发。
查看>>
iOS图片上传及压缩
查看>>
CentOS 7 ARM 版发布:支持树莓派2/香蕉派/CubieTruck
查看>>
Android Studio 编写 JNI
查看>>