【vuex】

news/2024/5/19 11:47:55

文章目录

  • 资料
  • 安装
  • 使用
    • 快速开始
    • 基本使用(非模块化):
      • 例子:
      • 辅助函数
        • 导入
        • 参数
        • mapState
        • mapGetters
        • mapMutations
        • mapActions
    • 模块化:
      • 步骤:

在这里插入图片描述

资料

尚硅谷视频:https://www.bilibili.com/video/BV1Zy4y1K7SH?p=108
官网:https://v3.vuex.vuejs.org/zh/

安装

注意:vue的版本要和vuex的版本差一个版本,也就是:

  • vue2要用vuex3
  • vue3要用vuex4

先看一下自己使用的vue的版本:打开项目的package.json文件,看到目前用的vue2,因此,要安装vuex3
在这里插入图片描述
安装vuex3的命令;其他版本,替换下面命令中的3

npm install vuex@3

使用

快速开始

新建store 目录,和App.vue平级:
在这里插入图片描述
在store目录下新建index.js文件,内容如下:

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    
  },
  actions:{
  	
  }
  mutations: {

  }
})

main.js中引入刚刚创建的文件:(./store/index可简写为./store)
在这里插入图片描述

基本使用(非模块化):

例子:

例如,我们使用如下内容,替换/store/index.js

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    sum: 0
  },
  actions:{
  	add(context,val){
    	context.commit("ADD",val)
    }
  },
  mutations: {
    ADD(state,val){
        state.sum += val;
    },
})

并在某个模块(记为A模块)的methods中使用:

methods:{
  add(){
    this.$store.dispatch("add",this.optionVal)
  }
}

具体工作流程:
在这里插入图片描述
当然,如果逻辑比较简单,也可以在模块的方法中直接调用mutation中的方法,此时,需要调用$store.commit方法。
例如上面的例子,A模块中的放可以写成:

this.$store.commit("ADD",this.optionVal)

辅助函数

导入

前提:需要引入对应函数:(用哪个引入哪个)

import {mapState, mapGetters, mapActions, mapMutations} from "vuex";

参数

mapXxx的参数一般有两种:

  • 对象,大致对应关系是:(后面的是字符串,不能简写)适用于要重命名的时候
    在这里插入图片描述
  • 数组,此时表示上述对象的key和value相同:(注意单引号。)
    在这里插入图片描述

mapState

下图三个方法的效果等价:
在这里插入图片描述

mapGetters

下图三个方法的效果等价:

 // bigSum(){
 //     return this.$store.getters.bigSum
 // },

 // ...mapGetters(['bigSum']),

 ...mapGetters({
     bigSum:"bigSum"
 }),

mapMutations

下图三个方法的效果等价:

// ADD(){
//     this.$store.commit("ADD",this.optionVal)
// },

// ...mapMutations(["ADD"]),

...mapMutations({ADD:"ADD"}),

mapActions

下图三个方法的效果等价:

// addIfOdd(){
//     this.$store.dispatch("addIfOdd",this.optionVal)
// },

//...mapActions(['addIfOdd']),

...mapActions({
    addIfOdd:'addIfOdd',
}),

模块化:

步骤:

修改store/index.js:
在这里插入图片描述
修改mapXxx辅助函数:

  • 第一个参数为命名空间,就是这个:
    在这里插入图片描述

  • 第二个参数和本文使用 > 基本使用 > 辅助函数 的第一个参数一致。

例子:
在这里插入图片描述

大致执行流程:
在这里插入图片描述


http://lihuaxi.xjx100.cn/news/83426.html

相关文章

武汉星起航:亚马逊产品被跟卖的应对方法

在亚马逊平台,是允许有跟卖的形式存在,当你的产品被一两个卖家跟卖,说明你的产品卖得好,但是如果你的产品被大量跟卖,那就要及时阻止,不然就要给别人作嫁衣了。 什么是跟卖? 几家欢喜几家愁&a…

2020ICPC南京【个人题解EFHKLM】

目录E - Evil Coordinate(思维、暴力)思路代码F - Fireworks(概率期望、三分)思路代码H - Harmonious Rectangle(思维、暴力)思路代码K - K Co-prime Permutation(签到、构造)思路代…

oracle 12c使用 SEED创建一个PDB

1 登录cdb export ORACLE_SIDorclcdb sqlplus / as sysdba 2 建pdb #这里利用pdbseed建一个orclpdb5 CREATE PLUGGABLE DATABASE orclpdb5 ADMIN USER pdbadmin IDENTIFIED BY oracle file_name_convert(pdbseed,orclpdb5) --看到会自动创建orclpdb5目录(和pdbseed并列)&…

测试开发用例

为何要写测试用例 测试用例式测试执行的依据测试用例可以复用,在回归测试时不用再次编写测试用例可以衡量需求的覆盖率后人可以借鉴手工测试用例时自动化测试的依据 测试用例的设计方法 基于需求的设计方法 需求是测试人员进行测试的依据,测试人员分…

从前向数据复制(FDR)到增强管道数据流转(EPDR)-taskBus的前世今生

增强管道数据流转技术(Enhance Pipeline Data Routing,EPDR)是 taskBus 跨平台多进程合作框架创立的开源数据分发技术,在软件无线电方向已经具有了较为完整的应用场景。应一些玩家要求,介绍一下这个技术的起源&#xf…

【贝塞尔曲线拟合】

贝塞尔曲线拟合问题描述拟合曲线生成过程参考程序注意事项问题描述 已知一条n阶贝塞尔曲线L(P0,P1,P2,P3,...,Pn)L(P0, P1, P2, P3, ..., Pn)L(P0,P1,P2,P3,...,Pn)(P0P0P0为起点,P1P1P1为第一个控制点,P2P2P2为第二个控制点,P3P…

原生 APP、Web、混合 APP,三种开发模式有何不同?

前言 原生 App 又称Native App,该开发针对 IOS、Android、Windows 等不同的手机操作系统要采用不同的语言和框架进行开发;无论是从开发难度,价格还是周期来看,原生开发都更复杂、更昂贵、周期更长 那为什么还要选择原生 App 开发…