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

做网站技术要求怎么写/seo建站技巧

做网站技术要求怎么写,seo建站技巧,制作手机端网站开发,如何注册一家网站建设公司购物车修改 uuid临时游客身份购物车部分功能全选修改商品数量修改商品勾选状态删除产品 uuid临时游客身份 请求数据仓库发起请求 ->问题:获取不到购物车数据? 所以需要一个身份,告诉服务器是谁存的数据?是要获取谁的数据&…

购物车修改

    • uuid临时游客身份
    • 购物车部分功能
      • 全选
      • 修改商品数量
      • 修改商品勾选状态
      • 删除产品

uuid临时游客身份

请求数据+仓库发起请求
->问题:获取不到购物车数据?
在这里插入图片描述
所以需要一个身份,告诉服务器是谁存的数据?是要获取谁的数据?

//引入
import {v4 as uuidv4} from 'uuid';
//生成具有唯一标识的字符串作为id
uuid_token = uuidv4();

utils文件存放与业务逻辑无关的公共工具函数、辅助方法或通用逻辑
将生成一个随机游客身份,将 游客身份 UUID 放在 HTTP 请求头 中随每次请求发送给后端,后端在所有接口中都能识别同一游客,并关联其行为数据

  1. 为了保证存储一次游客身份的永久性,每次访问都是通过游客身份而不是每次重新生成一个新的游客身份----通过localStorage
//uitl
import {v4 as uuidv4} from 'uuid';export const getUUID = ()=>{let uuid_token = localStorage.getItem('UUIDTOKEN');if(!uuid_token){//本地没有存储,则生成一个uuid_token = uuidv4();//然后存储到本地localStorage.setItem('UUIDTOKEN',uuid_token);}return uuid_token;
}
  1. 在仓库中存储uuid,uuid_token=getUUID()
  2. 把uuidToken加在请求头中:在axios请求拦截器rquest.use((config)=>{})中,请求头添加字段(userTempId)config.header.userTempId = store.state.detail.uuid_token

购物车部分功能

全选

  • every用于判断购物车是否已经全选

every(item=>{表达式})遍历数组,若每项全都满足条件则返回true,否则返回false

isAllCheck(){return this.cartInfoList.every(item=>item.isChecked===1)
}

修改商品数量

绑定handler函数,参数(type,disNum,cart)分别表示:操作行为、数量变化(正/负/0)、cart是商品信息

  • 减少:@click=“handler(‘minus’,-1,cartInfo)”
  • 输入框:@change=“handler(‘change’,$event.target.value,cartInfo)”
  • 增加:@click=“handler(‘add’,1,cartInfo)”

添加节流操作:当快速多次修改产品数量时,会出现负数/0的现象

handler:throttle(async function(type,disNum,cart){if(type === 'minus') {//当商品数量为1时,不可再减少if(cart.skuNum === 1){return;}}if(type === 'change'){//输入内容不合法时if(isNaN(disNum * 1)  || disNum <= 0){disNum = 0;}else{//parseInt取整计算差值disNum = parseInt(disNum) - cart.skuNum}}//加按钮disNum不需要改变try{//更新服务器数据await this.$store.dispatch('addOrUpdateShopCart',{skuId:cart.skuId,skuNum:disNum})//再次获取服务器新的数据await this.$store.dispatch("getCartList")}catch (error){alert(error)}
},500),

修改商品勾选状态

  1. 封装删除商品的接口reqUpdateCheckedById函数
export const reqUpdateCheckedById = (skuId,isChecked)=>requests({url:`/cart/checkCart/${skuId}/${isChecked}`,method:'get'});
  1. 仓库写action发送请求
async updateCheckedById({commit},{skuId,isChecked}){let result = awiat reqUpdateCheckedById(skuId,isChecked);if(result.code===200){return 'ok';}else{return Promise.reject(new Error('fail'));}
}
  1. 绑定change事件触发updateChecked
//传入商品信息cart
//event参数获取当前勾选状态
async updateChecked(cart,event){
try{
//如果获取成功则再次获取服务器数据let isChecked = event.target.checked?1:0;await this.$store.dispatch("reqUpdateCheckedById",{cart,isChecked});this.getDate();}catch(error){alert(error.message);}
}

删除产品

通过后台提供的删除单个商品的接口,传入商品skuId,和之前差不多,我就省略了封装接口函数,然后在actions中封装成发送请求函数async deleteCartListBySckuId({commit},skuId){……}最后组件里面绑定事件派发actions等一样的操作。

当需要删除全部勾选的产品,该怎么做呢?没有相应的接口处理

当然可以method中遍历多次dispatch一个个删除,在这里我们将批量删除封装为actions函数deleteAllCheckedCart

  • 首先需要知道:deleteAllCheckedCart(context){console.log(context)}中conext是什么?
    conext实际上是个小仓库
    commit【提交mutations修改state】getters【计算属性】 dispatch【派发actions】在这里插入图片描述
    如此我们便可以拿到想要的购物车数据通过getters,然后也可以派发actions
    注意解构出所需要的getters和dispatch
deleteAllCheckedCart({getters,dispatch}){//forEach遍历cartInfoListlet PromiseAll = [];getters.cartList.cartInfoList.foEach(item=>{//需要过滤掉没有被勾选的产品let promise = item.isChecked==1?dispatch('deleteCartListBySckuId',item.skuId):'';//dispatch返回一个Promise//那么每次删除一个产品都会返回一个Promise//那么可以把每个对象放到promise.all中PromiseAll.push(promise);});//返回结果是失败还是成功return Promise.all(PromiseAll);
}
  • Promise.all()
    promise.all([p1,p2,p3])中是个数组,每一个p1、p2、p3、都是一个promise对象,如果有一个promise返回的是失败,那么都是失败,都成功才会成功

组件methods中:

async deleteAllCheckedCart(){try{await this.$store.dispatch('deleteAllCheckedCart');//再次发送请求获取购物车列表this.getDate();}catch(error){alert(error.message);}
}
http://www.lryc.cn/news/577771.html

相关文章:

  • 圣辉友联做网站公司/人民日报评网络暴力
  • 适合推广的网站有哪些/雷神代刷推广网站
  • dw做网站地图/免费建立个人网站申请
  • 石家庄网站建设工作室/本周新闻热点事件
  • 徐州手机网站制作公司/万网域名查询注册商
  • 惠州专业网站建设价格/百度问一问
  • 如何运营网站/新冠疫情最新消息
  • dw做简单小说网站/企业如何注册自己的网站
  • pc端网站优缺点/发布软文广告
  • 云网站系统/无锡seo优化公司
  • 做网站设计比较好的公司/抖音广告投放代理商
  • 网站模板修改/怎么做线上推广
  • 做网站的像素/什么平台推广效果最好
  • ppt模板免费下载网站哪个好/百度seo站长工具
  • 儿童早教网站模板/优化网站关键词排名
  • 一级a做爰片i免费网站/推广一个产品有哪些方式
  • 微网站建设方案书/吸引人气的营销方案
  • 山西中交建设工程招标有限公司网站/seo外包服务方案
  • 国外网站 国内做镜像/深圳做网站seo
  • 网站建设分站要备案/重庆网站推广联系方式
  • 郓城做网站公司/网站为什么要做seo
  • 莲都区建设局网站/平台推广是什么意思
  • 广州企业网站公司/凡科网免费建站官网
  • 廊坊做网站厂商定制/竞价培训课程
  • 合肥seo推广百家号/2022年seo还值得做吗
  • 网站建设实训报告建议和其他/苏州seo营销
  • 日本人做的网站本子/长沙网络公司最新消息
  • 做网站用什么空间好/百度识图在线使用
  • 建设招标网网站/百度新闻网页
  • 网站建设7个基/网站推广系统