首页 > 其他分享 >Vue学习笔记61--mapActions + mapMutations

Vue学习笔记61--mapActions + mapMutations

时间:2024-03-26 14:59:25浏览次数:24  
标签:... Vue -- mutations 61 selectNo 写法 bigSum store

原始实现

 

<template>
  <div>
    <h3>当前求和*10为:{{ bigSum }}</h3>
    <h3>当前求和为:{{ sum }}</h3>
    <h3>我在:{{ school }},学习:{{subject }}</h3>
    <select v-model.number="selectNo">
      <option value="1">1</option>
      <option value="2">2</option>
      <option value="3">3</option>
    </select>
    <button @click="increment">+</button>
    <button @click="decrement">-</button>
    <button @click="incrementOdd">当前为奇数再加</button>
    <button @click="incrementWait">等一下再加</button>
  </div>
</template>

<script>
import { mapGetters, mapState } from 'vuex'

export default {
  name: 'Count3',
  data () {
    return {
      selectNo: 1,//当前选择的数字
    }
  },
  // 通过计算属性获取state数据
  computed: {
    // totalSum () { return this.$store.state.sum },
    // totalSum ()、 mySchool ()、 mySubject () 等价于以下代码
    // 写法一:对象写法,借助mapState生成计算属性,从state中读取数据
    // ...mapState({ totalSum: 'sum', mySchool: 'school', mySubject: 'subject' }),

    // 写法二:数组写法,借助mapState生成计算属性,从state中读取数据
    ...mapState(['sum', 'school', 'subject']),

    // 等价于  bigSum () {      return this.$store.getters.bigSum    },
    // 借助mapGetters生成计算属性,从getters中读取数据
    // ...mapGetters(['bigSum']),//数组写法
    ...mapGetters({ bigSum: 'bigSum' }),//对象写法


  },
  mounted () {
    console.log('count this==>', this)
    console.log('count this.$store==>', this.$store)
  },
  methods: {
    // mutations
    increment () {
      // this.$store.dispatch('increment', this.selectNo)
      // 如果没有业务路基处理,可直接使用mutations中对应的方法
      this.$store.commit('Increment', this.selectNo)
    },
    decrement () {
      // this.$store.dispatch('decrement', this.selectNo)
      // 如果没有业务路基处理,可直接使用mutations中对应的方法
      this.$store.commit('Decrement', this.selectNo)
    },


    // actions
    incrementOdd () {
      this.$store.dispatch('incrementOdd', this.selectNo)
    },
    incrementWait () {
      this.$store.dispatch('incrementWait', this.selectNo)
    },
  },

}
</script>

<style scoped>
button {
  margin: 6px;
}
</style>

 

mapActions  + mapMutations

 

 注:

  1. mapActions与mapMutations使用时,如果需要传递参数,则需要在模版中绑定事件时传递入参,否则参数默认是event事件对象
  2. ...mapMutations数组写法(使用时--使用组件中的方法命名必须和mutations中的一致),mutations中的方法一般建议使用首字母大写

示例一:

<template>
  <div>
    <h3>当前求和*10为:{{ bigSum }}</h3>
    <h3>当前求和为:{{ sum }}</h3>
    <h3>我在:{{ school }},学习:{{subject }}</h3>
    请选择数量:<select v-model.number="selectNo">
      <option value="1">1</option>
      <option value="2">2</option>
      <option value="3">3</option>
    </select><br>

    <button @click="increment(selectNo)">mutation对象方式+</button>
    <button @click="decrement(selectNo)">mutation对象方式-</button> <br>

    <hr>
    <h3 style="color: brown">...mapMutations数组写法(使用时--使用组件中的方法命名必须和mutations中的一致)</h3>
    <button @click="Increment(selectNo)">mutation 数组方式+</button>
       <button @click="Decrement(selectNo)">mutation 数组方式-</button><br>

    <button @click="incrementOdd(selectNo)">当前为奇数再加</button>
    <button @click="incrementWait(selectNo)">等一下再加</button>
  </div>
</template>

<script>
import { mapGetters, mapState, mapMutations, mapActions } from 'vuex'

export default {
  name: 'Count3',
  data () {
    return {
      selectNo: 1,//当前选择的数字
    }
  },
  // 通过计算属性获取state数据
  computed: {
    // totalSum () { return this.$store.state.sum },
    // totalSum ()、 mySchool ()、 mySubject () 等价于以下代码
    // 写法一:对象写法,借助mapState生成计算属性,从state中读取数据
    // ...mapState({ totalSum: 'sum', mySchool: 'school', mySubject: 'subject' }),

    // 写法二:数组写法,借助mapState生成计算属性,从state中读取数据
    ...mapState(['sum', 'school', 'subject']),

    // 等价于  bigSum () {      return this.$store.getters.bigSum    },
    // 借助mapGetters生成计算属性,从getters中读取数据
    // ...mapGetters(['bigSum']),//数组写法
    ...mapGetters({ bigSum: 'bigSum' }),//对象写法

  },
  mounted () {
    console.log('count this==>', this)
    console.log('count this.$store==>', this.$store)
  },
  methods: {

    /*  可使用...mapMutations代替如下代码
     // mutations
     increment () {
       // this.$store.dispatch('increment', this.selectNo)
       // 如果没有业务路基处理,可直接使用mutations中对应的方法
       this.$store.commit('Increment', this.selectNo)
     },
     decrement () {
       // this.$store.dispatch('decrement', this.selectNo)
       // 如果没有业务路基处理,可直接使用mutations中对应的方法
       this.$store.commit('Decrement', this.selectNo)
     }, */

    //  借助mapMutations生成对应的方法,方法中会调用commit去联系mutations
    ...mapMutations({ increment: 'Increment', decrement: 'Decrement' }), //对象写法
    ...mapMutations(['Increment', 'Decrement']), //数组写法(数组写法使用时,使用组件中的方法命名必须和mutations中的一致)


    /*  actions
     ...mapActions 可替代如下代码
     incrementOdd () {
       this.$store.dispatch('incrementOdd', this.selectNo)
     },
     incrementWait () {
       this.$store.dispatch('incrementWait', this.selectNo)
     }, */

    //  借助mapActions生成对应的方法,方法中会调用dispatch去联系actions
    // ...mapActions({ incrementOdd: 'incrementOdd', incrementWait: 'incrementWait' }), //对象写法
    ...mapActions(['incrementOdd', 'incrementWait']), //数组写法

  },

}
</script>

<style scoped>
button {
  margin: 6px;
}
</style>

 

标签:...,Vue,--,mutations,61,selectNo,写法,bigSum,store
From: https://www.cnblogs.com/YYkun/p/18096516

相关文章

  • 32个Python爬虫项目让你一次吃到撑
    今天为大家整理了32个Python爬虫项目。整理的原因是,爬虫入门简单快速,也非常适合新入门的小伙伴培养信心。微信公众号爬虫。基于搜狗微信搜索的微信公众号爬虫接口,可以扩展成基于搜狗搜索的爬虫,返回结果是列表,每一项均是公众号具体信息字典。豆瓣读书爬虫。可以爬下豆瓣读......
  • 前端实现导出table表格为Excel、CSV
    js实现导出table表格为Exceljquery.table2excel.js要基于jquery的基础上才能使用,是一款专门导出excel的插件jquery-3.3.1.js下载http://www.jq22.com/jquery-info122代码如下:<!DOCTYPEhtml><html><head><metacharset="utf-8"><metaname="viewpor......
  • MySQL单表操作学习DDL_DML_DQL语句
    1创建数据库----DDL语句CREATETABLE`student`(`id`int(11)NOTNULLAUTO_INCREMENTCOMMENT'学号',`createDate`datetimeDEFAULTNULLCOMMENT'创建时间',`userName`varchar(20)DEFAULTNULLCOMMENT'用户名',`pwd`varchar(36)DEFA......
  • 一次快速使用docker安装mysql8.0记录(配置和数据挂载到指定目录)
    mkdir/home/mysql8vim/home/my.cnf[mysql]#设置mysql客户端默认字符集default-character-set=UTF8MB4[mysqld]port=3307max_connections=200max_connect_errors=10#修改加密方式,因为mysql8.x版本默认的密码加密的方式,Navicat识别不了,需修改为mysql_native_password......
  • 使用 React 和 ECharts 创建地球模拟扩散和飞线效果
    在本博客中,我们将学习如何使用React和ECharts创建一个酷炫的地球模拟扩散效果。我们将使用ECharts作为可视化库,以及React来构建我们的应用。地球贴图在文章的结尾。最终效果准备工作首先,确保你已经安装了React,并创建了一个新的React应用。如果你还没有安装R......
  • 结对项目
    结对项目这个作业属于哪个课程首页-软件工程2024-广东工业大学-班级博客-博客园(cnblogs.com)这个作业要求在哪里结对项目-作业-软件工程2024-班级博客-博客园(cnblogs.com)这个作业的目标两人合作完成一个自动生成小学四则运算题目的项目......
  • ccf-csp-2020-12-2期末预测之最佳阈值(c++满分题解)
    这个题暴力是可以有70分的,下面是暴力代码:(注释写的比较清楚了,也很好理解)#include<iostream>#include<vector>#include<set>#include<algorithm>usingnamespacestd;boolsort1(pair<int,int>vec1,pair<int,int>vec2)//对阈值从小到大排序{ returnvec1.first<=ve......
  • 工单管理系统是什么?有什么好处?
    随着企业的ITSM(IT服务管理)的逐渐成熟进而深入应用,如果您希望以低成本,寻找一款ITSM、工单管理工具,那么ServiceDeskPlus将是您性价比高的免费ITSM、工单管理系统选择。因为它提供全面的ITSM和资产管理能力,更重要的是,适用于不同管理层次的三个版本均提供免费版。 在如今竞争......
  • 0基础成功转行网络安全工程师,年薪25W+,经验总结都在这(建议收藏)
    我曾经是一名普通的销售人员,工作了三年,每天重复着相同的工作内容,感觉自己的职业生涯停滞不前,毫无发展前景。我开始思考,如何才能让自己的职业生涯更有意义,更具有挑战性。经过一番调研,我决定转行网络安全工程师。工作了越久,越觉得当初转行网络安全的决定还是非常正确的。目......
  • 实验一 CAN总线通讯协议实验
    【实验步骤】1、CAN信号矩阵与CANdbEditor的使用CAN总线实际应用中经常使用通信信号矩阵(Excel表格形式)来描述车辆网络中节点、消息与信号,可以直观地查看CAN网络数据通讯情况,各节点ECU必须遵循该通讯矩阵才能完成信息的交互和共享。(1)CAN网络的基本概念:节点:一个汽车控制器作为......