Vuex3学习笔记

文章目录

  • 1,入门案例
    • 辅助函数
  • 2,mutations传参
    • 辅助函数
  • 3,actions
    • 辅助函数
  • 4,getters
    • 辅助函数
  • 5,模块拆分
  • 6,访问子模块的state
    • 辅助函数
  • 7,访问子模块的getters
    • 辅助函数
  • 8,访问子模块的mutations
    • 辅助函数
  • 9,访问子模块的actions
    • 辅助函数

1,入门案例

安装库。

npm install vuex@3

新建store.js。

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

Vue.use(Vuex)

const store = new Vuex.Store({
    state: {
        count: 0
    },
    mutations: {
        increment(state) {
            state.count++
        }
    }
})

export default store

main.js。

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

最后,计数器案例。

<template>
  <h1 @click="add">{{ $store.state.count }}</h1>
</template>

<script>
export default {
  name: 'App',
  methods: {
    add() {
      this.$store.commit('increment')
    }
  }
}
</script>

效果:

在这里插入图片描述

辅助函数

可以将数据自动变成计算属性。

<template>
  <h1 @click="add">{{ count }}</h1>
</template>

<script>
import { mapState } from "vuex";
export default {
  name: 'App',
  methods: {
    add() {
      this.$store.commit('increment')
    }
  },
  computed: {
    ...mapState(['count'])
  }
}
</script>

2,mutations传参

跟着后面写就行,只能传一个参数。

const store = new Vuex.Store({
    state: {
        count: 0
    },
    mutations: {
        increment(state, v) {
            state.count += v
        }
    }
})

this.$store.commit('increment', 5)

辅助函数

可以将mutations自动变成方法。

<template>
  <h1 @click="increment(5)">{{ count }}</h1>
</template>

<script>
import { mapState, mapMutations } from "vuex";
export default {
  name: 'App',
  methods: {
    ...mapMutations(['increment'])
  },
  computed: {
    ...mapState(['count'])
  }
}
</script>

3,actions

异步操作数据。

const store = new Vuex.Store({
    state: {
        count: 0
    },
    mutations: {
        increment(state, v) {
            state.count += v
        }
    },
    actions: {
        incrementAction(context, v) {
            setTimeout(() => {
                context.commit('increment', v)
            }, 1000)
        }
    }
})

this.$store.dispatch('incrementAction', 5)

辅助函数

可以将actions自动变成方法。

<template>
  <h1 @click="incrementAction(5)">{{ count }}</h1>
</template>

<script>
import { mapState, mapMutations, mapActions } from "vuex";
export default {
  name: 'App',
  methods: {
    ...mapActions(['incrementAction']),
    ...mapMutations(['increment'])
  },
  computed: {
    ...mapState(['count'])
  }
}
</script>

4,getters

派生状态,类似于计算属性。

const store = new Vuex.Store({
    state: {
        count: 0
    },
    mutations: {
        increment(state, v) {
            state.count += v
        }
    },
    actions: {
        incrementAction(context, v) {
            setTimeout(() => {
                context.commit('increment', v)
            }, 1000)
        }
    },
    getters: {
        count1(state) {
            return state.count + "个"
        }
    }
})

$store.getters.count1 

辅助函数

可以将getters自动变成计算属性。

<template>
  <h1 @click="incrementAction(5)">{{ count1 }}</h1>
</template>

<script>
import { mapState, mapMutations, mapActions, mapGetters } from "vuex";
export default {
  name: 'App',
  methods: {
    ...mapActions(['incrementAction']),
    ...mapMutations(['increment'])
  },
  computed: {
    ...mapState(['count']),
    ...mapGetters(['count1'])
  }
}
</script>

5,模块拆分

新建a.js。

新增了一个配置项namespaced。

export default {
    namespaced: true,
    state: {
        count: 0
    },
    mutations: {
        increment(state, v) {
            state.count += v
        }
    },
    actions: {
        incrementAction(context, v) {
            setTimeout(() => {
                context.commit('increment', v)
            }, 1000)
        }
    },
    getters: {
        count1(state) {
            return state.count + "个"
        }
    }
}

b.js。

export default {
    namespaced: true,
    state: {
        count: 0
    },
    mutations: {
        increment(state, v) {
            state.count += v
        }
    },
    actions: {
        incrementAction(context, v) {
            setTimeout(() => {
                context.commit('increment', v)
            }, 1000)
        }
    },
    getters: {
        count1(state) {
            return state.count + "个"
        }
    }
}

改写store.js。

const store = new Vuex.Store({
    modules: {
        a, b
    }
})

6,访问子模块的state

$store.state.a.count
$store.state.b.count

辅助函数

<template>
  <div>
    <h1>{{ count }}</h1>
  </div>
</template>

<script>
import { mapState } from "vuex";
export default {
  computed: {
    ...mapState('a', ['count'])
  }
}
</script>

7,访问子模块的getters

$store.getters['a/count1']
$store.getters['b/count1']

辅助函数

用法与前面一致。

8,访问子模块的mutations

this.$store.commit('a/increment', 1)

辅助函数

用法与前面一致。

9,访问子模块的actions

this.$store.dispatch('a/incrementAction', 1)

辅助函数

用法与前面一致。

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

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

相关文章

Java--递归

1.递归就是A方法调用A方法&#xff0c;也就是调用自己本身 2.利用递归可以用简单的程序来解决一些复杂的问题&#xff0c;它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解&#xff0c;递归策略只需少量的程序就可描述出解题过程所需要的多次重复…

【MySQL数据库】:MySQL索引特性

目录 索引的概念 磁盘 磁盘的基本特征 MySQL与磁盘交互的基本单位 索引的理解 建立测试表 理解单个Page 理解多个Page 页目录 单页情况 多页情况 索引的数据结构 聚簇索引 VS 非聚簇索引 索引操作 创建主键索引 创建唯一索引 创建普通索引 创建全文索引 查询…

Nginx服务配置

一、Nginx服务的主配置文件nginx.conf vim /usr/local/nginx/conf/nginx.conf 全局块&#xff1a;全局配置&#xff0c;对全局生效&#xff1b;events块&#xff1a;配置影响 Nginx 服务器与用户的网络连接&#xff1b;http块&#xff1a;配置代理&#xff0c;缓存&#xff0c…

重温共射放大电路

1、放大概念 小功率信号变成一个大功率信号&#xff0c;需要一个核心器件做这件事&#xff0c;核心器件的能量由电源提供&#xff0c;通过核心器件用小功率的信号去控制大电源&#xff0c;来实现能量的转换和控制&#xff0c;前提是不能失真&#xff0c;可以用一系列正弦波进行…

conda 创建环境失败

conda create -n pylableimg python3.10在conda &#xff08;base&#xff09;环境下&#xff0c;创建新的环境&#xff0c;失败。 报错&#xff1a; LookupError: didn’t find info-scipy-1.11.3-py310h309d312_0 component in C:\Users\Jane.conda\pkgs\scipy-1.11.3-py310h…

RK3568-修改fiq-debugger调试串口

瑞芯微SDK默认将uart2_m0作为调试串口,以下方法将调试串口修改为uart5_m1。修改bootloader 修改/OK3568-linux-source/rkbin/tools/ddrbin_param.txt文件,5表示串口5。1表示复用m1。执行./ddrbin_tool ddrbin_param.txt ../bin/rk35/rk3568_ddr_1560MHz_v1.11.bin命令修改ub…

素数的无穷大的证明

素数的无穷大——欧几里得的证明 文章目录 一、说明二、欧几里得证据三、哥德巴赫对素数无穷性的证明&#xff08;1730&#xff09;四、Frstenberg 对素数无穷性的证明(1955)五、库默尔对欧几里得证明的重述 一、说明 众所周知&#xff0c;素数是无限多的。然而&#xff0c;两…

代码随想录算法训练营第36期DAY56

DAY56 套磁很顺利&#xff0c;发现又有书读了&#xff01; 300最长递增子序列 朴素法&#xff0c;这个好想&#xff0c;但是不对&#xff0c;比如 0 1 0 3 2 3 我的算法会找出0 1 3作为答案&#xff0c;而不是0 1 2 3 可以看出&#xff0c;后面的状态依赖于前面的状态&am…

CMake详细解读

原文来自&#xff1a;CMake 保姆级教程 视频来自B站&#xff1a;CMake 保姆级教程C/C 1、快速操作&#xff1a; 原文来自&#xff1a;在 VScode 中使用 CMake 快速创建cpp工程 首先创建一个 C/C 工程文件夹 CALC&#xff0c;用 VSCode 打开&#xff0c;目录结构如下&#x…

探索软件工程师在新能源汽车研发中的角色与贡献

随着全球对可持续发展的关注不断增加&#xff0c;新能源汽车的研发与应用成为了汽车行业的一个重要方向。作为软件工程师&#xff0c;参与新能源汽车研发不仅能够推动科技创新&#xff0c;还能为环保事业贡献力量。本文将深入探讨软件工程师在新能源汽车研发中的具体贡献、所需…

如何画系统架构图学习

原文链接:https://learn.lianglianglee.com/%E4%B8%93%E6%A0%8F/%E4%BB%8E%200%20%E5%BC%80%E5%A7%8B%E5%AD%A6%E6%9E%B6%E6%9E%84/51%20%E5%A6%82%E4%BD%95%E7%94%BB%E5%87%BA%E4%BC%98%E7%A7%80%E7%9A%84%E8%BD%AF%E4%BB%B6%E7%B3%BB%E7%BB%9F%E6%9E%B6%E6%9E%84%E5%9B%BE%EF…

C语言学习系列:初识C语言

前言&#xff0c;C语言是什么 语言&#xff0c;比如中文、英语、法语、德语等&#xff0c;是人与人交流的工具。 C语言也是语言&#xff0c;不过是一种特殊的语言&#xff0c;是人与计算机交流的工具。 为什么叫C语言呢&#xff1f; 这就要从C语言的历史说起了。 一&#…

RAG vs Fine-Tuning 微调哪种大模型(LLM)技术更好?

数据科学和机器学习的研究人员和从业者都在不断探索创新策略来增强语言模型的能力。在众多方法中&#xff0c;出现了两种突出的技术&#xff0c;即检索增强生成 (RAG)和微调。本文旨在探讨模型性能的重要性以及 RAG 和微调策略的比较分析。 模型性能在 NLP 中的重要性 增强用…

[数据集][图像分类]黑色素瘤分类数据集10015张7类别

数据集类型&#xff1a;图像分类用&#xff0c;不可用于目标检测无标注文件 数据集格式&#xff1a;仅仅包含jpg图片&#xff0c;每个类别文件夹下面存放着对应图片 图片数量(jpg文件个数)&#xff1a;10015 分类类别数&#xff1a;7 类别名称:[“0”,“1”,“2”,“3”,“4”,…

Java学习 - MyBatis - 入门实例详解

前言 在上一篇文章中&#xff0c;我们讨论了持久化的概念&#xff0c;并简要介绍了 MyBatis。今天我们将深入到 MyBatis 的实际应用中&#xff0c;通过创建一个入门实例来展示如何使用 MyBatis 执行基本的 CRUD&#xff08;创建、读取、更新、删除&#xff09;操作。这个过程将…

demo xshell (程序替换 工作目录 内建命令)

1.程序替换 在学习完一些列的进程替换接口之后我们大概就能知道&#xff0c;我们的环境变量以及命令行参数是如何传递给子进程的&#xff0c;这些参数是我们在调用进程替换时就传给了子进程的数据。 那么如果我们自己要实现一个简单的命令行解释器&#xff0c;我们是不是首先…

记录某书请求返回406及响应{“code“:-1,“success“:false}

今天测试某个平台的爬虫时使用requests post请求正常写了个测试脚本把各种参数带上出来以后出现了406情况&#xff0c;和网站数据是完全一样的 以为是 X-S、X-T参接不对&#xff0c;但在postman里测试又是可以的成功&#xff0c;以为是检验了参数顺序&#xff0c;测试发现也没…

Ubuntu 24.04 LTS 安装配置 MySQL Community Server 8.4.0 LTS

1 安装 Apt Repository ​​​​​​​地址MySQL :: Download MySQL APT Repository sudo dpkg -i mysql-apt-config_0.8.30-1_all.deb #安装mysql 8.4 lts sudo apt update sudo apt-get install mysql-server #修改mysql root密码策略 2 查看版本 testtest:~$ mysqld --v…

mysql 数据库datetime 类型,转换为DO里面的long类型后,只剩下年了,没有了月和日

解决方法也简单&#xff1a; 自定义个一个 Date2LongTypeHandler <resultMap id"BeanResult" type"XXXX.XXXXDO"><result column"gmt_create" property"gmtCreate" jdbcType"DATE" javaType"java.lang.Long&…

【内存管理】页表映射

页表的一些术语 现在Linux内核中支持四级页表的映射&#xff0c;我们先看下内核中关于页表的一些术语&#xff1a; 全局目录项&#xff0c;PGD&#xff08;Page Global Directory&#xff09; 上级目录项&#xff0c;PUD&#xff08;Page Upper Directory&#xff09; 中间目…