vuex基础用法 与 辅助函数使用

效果图

在这里插入图片描述

index.js文件

import Vue from "vue";
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
    state: {
        shopsList: [{
                goodsName: "手机1", //商品名
                goodsAmount: 0, //购买的商品数量
                goodsPrice: 100, //单个商品价格
                totalPrice: 0,
                id: 1,

            },
            {
                goodsName: "手机2", //商品名
                goodsAmount: 0, //购买的商品数量
                goodsPrice: 200, //单个商品价格
                totalPrice: 0,
                id: 2,

            },
            {
                goodsName: "手机3", //商品名
                goodsAmount: 0, //购买的商品数量
                goodsPrice: 300, //单个商品价格
                totalPrice: 0,
                id: 3,

            },
            {
                goodsName: "手机4", //商品名
                goodsAmount: 0, //购买的商品数量
                goodsPrice: 400, //单个商品价格
                totalPrice: 0,
                id: 4,

            },
        ],

        goodsNumber: 0
    },
    mutations: {
        // 添加商品
        addGoodsMutations(state, goods) {
            state.shopsList.forEach((item) => {
                if (item.id === goods.id) {
                    item.goodsAmount++
                }
            })
        },
        // 减去商品
        reduceGoodsMutations(state, goods) {
            if (goods.goodsAmount === 0) {
                alert("商品已经不能再减啦")
                return
            }
            state.shopsList.forEach((item) => {
                if (item.id === goods.id) {
                    item.goodsAmount--
                }

            })


        },
        totalMutations(state, goods) {
            state.shopsList.forEach((item) => {
                if (item.id === goods.id) {
                    item.totalPrice = item.goodsAmount * item.goodsPrice
                }

            })
        },
    },
    actions: {

        addGoodsActions({
            commit
        }, item) {
            commit('addGoodsMutations', item)
        },
        reduceGoodsActions({
            commit
        }, item) {
            commit('reduceGoodsMutations', item)
        },
        totalAction({
            commit
        }, item) {
            commit('totalMutations', item)
        }
    },
    getters: {},
    modules: {}
})

页面

<template>
  <div class="box">
    <div class="content" v-for="(item, index) in shopsList" :key="index">
      <div>
        名称:{{ item.goodsName }} 价钱:{{ item.goodsPrice }}
        购买数量:
        <el-button style="margin-right: 5px" @click="reduce(item)">-</el-button>
        <span>{{ item.goodsAmount }}</span>
        <el-button style="margin-left: 5px" @click="add(item)">+</el-button>
        <span>总价钱:{{ item.totalPrice }}</span>
      </div>
    </div>
  </div>
</template>

<script>
import { mapState, mapMutations, mapActions } from "vuex";
export default {
  mounted() {},
  data() {
    return {};
  },
  computed: {
    ...mapState(["shopsList", "totalPrice", "goodsNumber"]),
  },
  methods: {
    ...mapMutations(["addGoodsMutations", "reduceGoodsMutations"]),
    ...mapActions(["addGoodsActions", "reduceGoodsActions", "totalAction"]),
    // 减少商品数量
    reduce(item) {
      this.reduceGoodsActions(item);
      this.totalAction(item);
    },
    // 增加商品数量
    add(item) {
      this.addGoodsActions(item);
      this.totalAction(item);
    },
  },
};
</script>

<style>
.box {
  width: 400px;
  height: 200px;
  border: 1px solid black;
}
.content {
  height: 50px;
  display: flex;
  justify-content: space-evenly;
  align-items: center;
}
</style>

先这样吧,后续将再完善

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/291704.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

14.用户管理

目录 1、权限表 1、user表 1.用户列 2.权限列 3.安全列 4.资源控制列 2、db表和host 表 1.用户列 2.权限列 3. tables_priv 表和 columns _priv 表 4.procs_priv 表 2、账户管理 1. 登录和退出MySQL服务器 2、创建普通用户&#xff1a; 1.使用CREATE USER语创建…

C#最佳工具集合:IDE、分析、自动化工具等

C#是企业中广泛使用的编程语言&#xff0c;特别是那些依赖微软的程序语言。如果您使用C#构建应用程序&#xff0c;则最有可能使用Visual Studio&#xff0c;并且已经寻找了一些扩展来对您的开发进行管理。但是&#xff0c;这个工具列表可能会改变您编写C#代码的方式。 C#编程的…

找不到vcruntime140.dll怎么处理?6个修复教程分享

本文将详细介绍vcruntime140.dll文件的相关内容&#xff0c;并提供6个不同的修复教程&#xff0c;帮助大家解决这一问题。 一、vcruntime140.dll是什么文件&#xff1f; vcruntime140.dll是Visual C Redistributable Packages的一部分&#xff0c;它是Microsoft Visual Studi…

连续分配管理方式-第四十三天

目录 前言 单一连续分配 固定分区分配 分区大小相等 分区大小不等 分区说明表 动态分区分配 问题 用什么样的数据结构记录内存的使用情况 应该选择哪个分区进行分配 分区的分配与回收操作 分配 回收 结论 本节思维导图 前言 连续分配指为用户进程分配的必须是一…

条件随机场 (CRF) 的损失函数以及faiss 的原理介绍

1、条件随机场 (CRF) 的损失函数 条件随机场&#xff08;CRF&#xff09;是一种统计建模方法&#xff0c;常用于结构化预测问题&#xff0c;如序列标注、分词和命名实体识别等。在CRF模型中&#xff0c;损失函数用于衡量模型预测的标记序列与真实标记序列之间的差异。CRF的目标…

【Redux】自己动手实现redux和react-redux

1. React提供context的作用 在class组件的世界里&#xff0c;如果后代组件共享某些状态&#xff0c;比如主题色、语言键&#xff0c;则需要将这些状态提升到根组件&#xff0c;以props的方式从根组件向后代组件一层一层传递&#xff0c;这样则需要在每层写props.someData&#…

控制障碍函数(Control Barrier Function,CBF) 二、示例

二、示例 2.1、系统模型 这里我们举一个CBF作者给出的经典示例 我们定义控制输入 u u u 为蓝色车的推力。 p p p 为蓝色车的位置&#xff0c; v v v 为蓝色车的速度&#xff0c; z z z 为蓝色车与黄色车之间的距离&#xff0c; v 0 v_0 v0​ 为黄色车的速度。我们定义系统的…

功能介绍 | 探秘Goby功能世界:点击URL,即刻畅享快速调起之旅!

​​0x01 前言 ​我们从只会点鼠标的猴子到CtrlC,CtrlV来回切换的工具人&#xff0c;但有时候遇到大量需要复制的url界面&#xff0c;真的希望能有一个可以一键整理、一键扫描URL的功能来拯救&#xff01; 好消息是&#xff0c;Goby从客户端版本2.8.6起&#xff0c;官方引入了…

CAN数据记录仪在新能源车上的应用

随着新能源汽车的快速发展&#xff0c;对车辆安全和性能的要求也越来越高。在新能源车中&#xff0c;液位传感器是必不可少的零部件之一&#xff0c;用于监测电池液位、冷却液位等关键参数。在测试阶段需要工作人员花费大量时间跟车去获取它的CAN数据&#xff0c;从而分析是否有…

web自动化测试从入门到持续集成

在很多刚学习自动化的可能会认为我只需要会运用selenium&#xff0c;我只需要在一个编辑器中实用selenium java编写了一些脚本那么就会自动化了&#xff0c;是真的吗&#xff1f;答案肯定是假的。自动化肯定是需要做到真的完全自动化&#xff0c;那如何实现呢&#xff1f;接着往…

学习Go语言Web框架Gee总结--前缀树路由Router(三)

学习Go语言Web框架Gee总结--前缀树路由Router router/gee/trie.gorouter/gee/router.gorouter/gee/context.gorouter/main.go 学习网站来源&#xff1a;Gee 项目目录结构&#xff1a; router/gee/trie.go 实现动态路由最常用的数据结构&#xff0c;被称为前缀树(Trie树) 关…

MySQL之CRUD,函数与union使用

目录 一.CRUD 1.1.SELECT(查询) 1.2.INSERT&#xff08;新增&#xff09; 1.3.UPDATE(修改) 1.4.DELETE&#xff08;删除&#xff09; 二.函数 2.1.常见函数 2.1.1.字符函数 2.1.2.数字函数 2.1.3.日期函数 2.2.流程控制函数 2.3.聚合函数 三.union与union all 四…

物流实时数仓:数仓搭建(DWS)一

系列文章目录 物流实时数仓&#xff1a;采集通道搭建 物流实时数仓&#xff1a;数仓搭建 物流实时数仓&#xff1a;数仓搭建&#xff08;DIM&#xff09; 物流实时数仓&#xff1a;数仓搭建&#xff08;DWD&#xff09;一 物流实时数仓&#xff1a;数仓搭建&#xff08;DWD&am…

JMeter CSV 参数文件的使用方法

.在 JMeter 测试中&#xff0c;参数化是非常重要的&#xff0c;参数化允许我们模拟真实世界中的各种情况。本文我们将探讨如何在 JMeter 中使用 CSV 参数文件。 创建 CSV 文件 首先&#xff0c;我们需要创建一个逗号分隔的值&#xff08;CSV&#xff09;文件&#xff0c;其中…

创建企业邮箱帐户指南:常见问题与解决方法分享

专业的电子邮件地址可以帮助客户识别商务人士&#xff0c;并了解公司给他们发邮件的目的。如果你从事管理、信息技术或人力资源工作&#xff0c;你可能会负责为一个企业建立一个企业邮箱帐户。了解如何为新员工和现有员工设置电子邮件帐户可以帮助您简化公司内部的沟通。 在这篇…

python小工具之弱密码检测工具

一、引用的python模块 Crypto&#xff1a; Python中一个强大的加密模块&#xff0c;提供了许多常见的加密算法和工具。它建立在pyc.ypodome或pyc.ypto等底层加密库之上&#xff0c;为Python程序员提供了简单易用的API&#xff0c;使其可以轻松地实现各种加密功能。 commands…

牵绳遛狗你我他文明家园每一天,助力共建文明社区,基于YOLOv5开发构建公共场景下未牵绳遛狗检测识别系统

遛狗是每天要打卡的事情&#xff0c;狗狗生性活泼爱动&#xff0c;一天不遛就浑身难受&#xff0c;遛狗最重要的就是要拴绳了&#xff0c;牵紧文明绳是养犬人的必修课。外出遛狗时&#xff0c;主人手上的牵引绳更多是狗狗生命健康的一道重要屏障。每天的社区生活中&#xff0c;…

秋招复习之数据结构

目录 前言 1 数据结构分类 2 基本数据类型 3 数字编码 4 字符编码 总结 前言 秋招复习之数据结构&#xff0c;数据结构分类、基本数据类型、字符编码、数字编码等基础知识。 1 数据结构分类 数据结构分为逻辑结构和物理结构。 逻辑结构分为线性数据结构&#xff08;数组链表…

在word文档中自制代码段样式

附&#xff1a; 在word中插入高亮代码的网站 HighlightCode&#xff1a;https://highlightcode.com/ CodeInWord&#xff1a;http://codeinword.com/ 一、新建代码段样式 点击下拉按钮&#xff0c;选择创建样式&#xff0c;命名为代码段&#xff0c;然后点击修改 点击格式&a…

CSS transition详解

文章目录 属性transition-propertytransition-durationtransition-timing-functiontransition-delaytransition 简写属性 方法Element&#xff1a;transitionrun 事件Element&#xff1a;transitionstart 事件Element&#xff1a;transitionend 事件Element&#xff1a;transit…