使用vuex完成加入购物车案例

2023-11-15

需求:当点击了加入购物车按键后,把商品添加到购物车中。

步骤:

  1. 先获取商品的数据,保存到仓库中
  2. 将数据保存到本地存储
  3. 在购物车页面,从本地进行调用数据
  4. 进行页面渲染

页面组成:

 <HeaderW>:头部,有两个<router-link>

<Context>:组件展示区,使用<router-view>,有两个组件(Books---图书列表,Car---购物车)

前期准备工作:

  1. 先安装路由和Vuex
npm install vue-router@3 --save
npm install vuex@3  --save
  1.  配置路由

(1)创建router文件夹,在里面创建index.js文件

import VueRouter from 'vue-router'
import car from '../components/car.vue'
import header from '../components/HeaderW.vue'
import Books from '../components/Books.vue'

export default new VueRouter({
    routes:[
        {
            path:'/car',
            component:car
        },
        {
            path:'/header',
            component:header
        },
        {
            path:'/books',
            component:Books
        }
    ]
})

(2)在main.js中引入

import VueRouter from 'vue-router'
import App from './App.vue'
import Vue from 'vue'
import router from './router'
Vue.use(VueRouter)
new Vue({
  render: h => h(App),
  router,
}).$mount('#app')
  1. 配置store

(1)创建store文件夹,在里面创建index.js文件

import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)

const actions={
    
}
const mutations={
    
}
const state={
    
}
export default new Vuex.Store({
    actions,
    mutations,
    state
})

(2) 在main.js中引入store

import store from './store/index'

new Vue({
  render: h => h(App),
  router,
  store
}).$mount('#app')

操作步骤:

1.给添加到购物车按钮,添加点击事件

//在图书列表Books组件里
<td><button @click="addCart(book)">添加到购物车</button></td>

2.当点击之后,就派发请求,获取数据,把数据传给服务器

//在图书列表Books组件里
methods: {
    addCart(book) {
      book.count = 1; //默认情况下购买数量都为1
      this.$store.commit("ADDCAR", book);
      // this.$router.push("/car");
    },
  },

3.配置仓库里的数据

//在store/index.js中

const actions={
    
}
const mutations={
    // 这里的book就是使用commit传过来的参数
    ADDCAR(state,book){
        // 下面进行去重判断
        // 当点击商品时,第一次点击是添加商品,第二次点击表示商品数量的添加
        var flag=false//首先设置默认是没有数据的
        state.carList.some(item=>{//使用some检测传过来的数据的id是不是和本地存储的一样,如果一样则数量加加
            if(item.id==book.id){
                item.count++
                flag=true
            }
        })
        // 默认情况下,没有数据时,直接添加商品
        if(!flag){
            state.carList.push(book)           
        }
        // 使用本地存储数据
        localStorage.setItem('carList',JSON.stringify(state.carList))
    }
}
const state={
    carList:[]
}

4.在购物车页面,获取数据

//在car.vue中
data() {
    return {
      cartList: [],
    };
  },
  created() {
    this.cartList = this.$store.state.carList;
  },

5.渲染购物车页面

<tr v-for="(book, index) in cartList" :key="index">
        <td><input type="checkbox" v-model="book.check" /></td>
        <td>{{ index + 1 }}</td>
        <td>{{ book.title }}</td>
        <td>¥{{ book.price }}</td>
        <td>
          <button :disabled="book.count===0"  @click="book.count--">-</button>
          {{ book.count }}
          <button @click="book.count++">+</button>
        </td>
        <td><button>删除</button></td>
 </tr>

注意:这里的传过来的数据是book,book里面有id,type,title,price,count这些数据。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用vuex完成加入购物车案例 的相关文章

随机推荐

  • vue实现多页面应用开发,包含项目之间跳转

    需求 在一个vue项目工程下 需要部署两个项目甚至多个项目 实现思路 第一步 在vue config js文件中配置两个项目的入口 module exports pages index页面是必须的 作为主项目的入口页面 index entr
  • YARN的产生背景和架构剖析

    hadoop1存在的问题 1 单点故障 可靠性低 JobTracker采用了master slave结构 是集群事务的集中处理点 存在单点故障 2 单点瓶颈 扩展性差 需要完成的任务太多 JobTracker兼顾资源管理和作业控制跟踪功能跟
  • 基于计算机视觉的米粒计数检测——Matlab源码实现

    基于计算机视觉的米粒计数检测 Matlab源码实现 计数是现代生产和科研领域中的重要问题之一 在粮食收获领域 以小麦为例 正确地评估小麦产量对于农业生产和市场供应至关重要 然而 目前的计数方法多数是通过人工或半自动方式 难以快速 准确地完成
  • 小程序和网页的区别

    小程序和网页有什么区别呢 下面我们拿微信小程序来举例 运行环境 网页 在浏览器中运行 微信小程序 在微信中运行 开发环境 网页 代码编辑器 vscode 网页浏览器 chrome 微信小程序 代码编辑器 vscode 微信模拟器 微信开发者
  • mfc140.dll丢失怎样修复-由于找不到mfc140.dll无法继续执行代码的解决方法

    mfc140 dll是电脑文件中的dll文件 动态链接库文件 如果计算机中丢失了某个dll文件 可能会导致某些软件和游戏等程序无法正常启动运行 并且导致电脑系统弹窗报错 在电脑随便打开一个浏览器然后在顶部输入 dll修复程序 site 按下
  • Linux系统下安装jdk及环境配置(两种方法)

    这里介绍两种linux环境下jdk的安装以及环境配置方法 在windows系统安装jdk以及环境配置 相信大家都会 这里就不做赘述了 这里主要讲讲linux下的jdk安装以及环境配置 第一种属于傻瓜式安装 一键安装即可 yum安装 第二种手
  • 指针和引用 , 指针空值nullptr

    引用和指针 1 引用概念 引用不是新定义一个变量 而是给已存在变量取了一个别名 编译器不会为引用变量开辟内存空间 它和它引用的变量共用同一块内存空间 使用方式和普通变量相同 当原变量来对待 比如 李逵 在家称为 铁牛 江湖上人称 黑旋风 底
  • 不同岛屿的数量

    694 不同岛屿的数量 这道题要给出不同岛屿的数量 最直观的想法就是对发现的不同岛屿进行序列化 然后把序列化结果存到HashSet 那怎么序列化呢 其实比较类似于二叉树的序列化 记录遍历顺序 方向 这里用 1 2 3 4 代表上下左右 1
  • 全网最详细网络安全学习路线!手都给我码酸了!

    零基础小白 学完掌握可就业 入门到入土的网安学习路线 在各大平台搜的网安学习路线都太粗略了 看不下去了 我把自己报班的系统学习路线 整理拿出来跟大家分享了 本文为纯干货纯文字内容 需要详细学习路线图以及配套资料的同学可留言或者后台踢我免费分
  • 什么是计算机视觉

    计算机视觉 让计算机 看懂 和视频 这是什么场景 画面里都有什么 人 车和房子在什么位置 目标在做什么 目标间有什么关系 视觉是自然智能不可思议的结晶 猕猴的大脑皮层中视觉部分占据大约50 人脑中有关视觉的部分所占比重大 人类大脑对视觉进行
  • Linux下EC20实现ppp拨号

    硬件描述 EC20模块封装成标准的PCIe接口 和系统之家通讯主要通过usb通讯 系统描述 此处使用的是Linux 3 0 1 一 驱动支持 首先需要对Linux内核驱动做一定的修改 使操作系统能够支持EC20 1 Add VID add
  • Windows 无法启动MySql服务 (位于 本地计算机上)错误2: 系统找不到指定的文件

    错误 Windows 无法启动MySql服务 位于 本地计算机上 错误2 系统找不到指定的文件 错误原因 服务的路径与安装的路径不一致 之前安装过mysql后卸载重装容易出现这样的问题 解决方法 修改windows注册表 windows r
  • DC-DC升压电路

    目录 实验目的 课程条件 原理框图和实验思路 实验原理图 电路图分析
  • memcached server LRU 深入分析

    Memcached 人所皆知的remote distribute cache 不知道的可以javaeye一下下 或者google一下下 或者baidu一下下 但是鉴于baidu的排名商业味道太浓 从最近得某某事件可以看出 所以还是建议jav
  • 【Java基础】异常

    文章目录 1 基本信息 2 Throwable 体系 2 1 Exception 2 2 Error 2 3 常见的 Exception 和 Error 3 异常的处理 3 1 抛出异常throw 3 2 捕获异常try catch fin
  • OpenAI API(ChatGPT)接口地址https://api.openai.com/v1/chat网络问题无法访问Error: connect ECONNREFUSED ETIMEDOUT

    https api openai com v1 chat是openAI的API接口地址 因为长城的原因 23年年初一次更新后便无法访问 访问接口会提示Error connect ETIMEDOUT等网络相关的问题 解决办法有三种 本文只做方
  • 分类算法的R语言实现案例

    最近在读 R语言与网站分析 书中对分类 聚类算法的讲解通俗易懂 和数据挖掘理论一起看的话 有很好的参照效果 然而 这么好的讲解 作者居然没提供对应的数据集 手痒之余 我自己动手整理了一个可用于分类算法的数据集 下载链接 csdn下载频道搜索
  • Java实现将数字转化为繁体汉字表示

    在CSDN论坛上看到了一个帖子 要求用Java实现将数字转化为繁体汉字表示 如 输入一个数字将其转化为大写 比如输入整型1034 得到 壹仟零叁拾肆 看了之后感觉挺有意思的 自己也就写了一个 代码如下 实现将数字转化为繁体汉字表示 impo
  • TensorFlow2学习(一):介绍及安装测试

    TensorFlow是什么 从计算机发明之初 人们就希望它能够帮助甚至代替人类完成重复性劳作 利用巨大的存储空间和超高的运算速度 计算机已经可以非常轻易地完成一些对于人类非常困难 但对计算机相对简单的问题 比如统计一本书中不同单词出现的次数
  • 使用vuex完成加入购物车案例

    需求 当点击了加入购物车按键后 把商品添加到购物车中 步骤 先获取商品的数据 保存到仓库中 将数据保存到本地存储 在购物车页面 从本地进行调用数据 进行页面渲染 页面组成