千家信息网

vuex进阶知识点的示例分析

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章将为大家详细讲解有关vuex进阶知识点的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、 Gettercomputed:{ getName(){
千家信息网最后更新 2026年11月03日vuex进阶知识点的示例分析

这篇文章将为大家详细讲解有关vuex进阶知识点的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

一、 Getter

computed:{  getName(){   return this.$store.state.name  }}

这里假设现在逻辑有变,我们最终期望得到的数据(getName),是基于 this.$store.state.name 上经过复杂计算得来的,刚好这个getName要在好多个地方使用,那么我们就得复制好几份.

vuex 给我们提供了 getter,请看代码 (文件位置 /src/store/index.js)

import Vue from 'vue'import Vuex from 'vuex'Vue.use(Vuex)export default new Vuex.Store({ // 类似 vue 的 data state: {  name: 'oldName' }, // 类似 vue 的 computed -----------------以下5行为新增 getters:{  getReverseName: state => {    return state.name.split('').reverse().join('')  } }, // 类似 vue 里的 mothods(同步方法) mutations: {  updateName (state) {   state.name = 'newName'  } }})

然后我们可以这样用 文件位置 /src/main.js

computed:{  getName(){   return this.$store.getters.getReverseName  }}

事实上, getter 不止单单起到封装的作用,它还跟vue的computed属性一样,会缓存结果数据, 只有当依赖改变的时候,才要重新计算.

二、 actions和$dispatch

细心的你,一定发现我之前代码里 mutations 头上的注释了 类似 vue 里的 mothods(同步方法)

为什么要在 methods 后面备注是同步方法呢? mutation只能是同步的函数,只能是同步的函数,只能是同步的函数!! 请看vuex的解释:

现在想象,我们正在 debug 一个 app 并且观察 devtool 中的 mutation 日志。每一条 mutation 被记录, devtools 都需要捕捉到前一状态和后一状态的快照。然而,在上面的例子中 mutation 中的异步函数中的回调让这不 可能完成:因为当 mutation 触发的时候,回调函数还没有被调用,devtools 不知道什么时候回调函数实际上被调 用--实质上任何在回调函数中进行的状态的改变都是不可追踪的。
那么如果我们想触发一个异步的操作呢? 答案是: action + $dispatch, 我们继续修改store/index.js下面的代码

文件位置 /src/store/index.js

import Vue from 'vue'import Vuex from 'vuex'Vue.use(Vuex)export default new Vuex.Store({ // 类似 vue 的 data state: {  name: 'oldName' }, // 类似 vue 的 computed getters:{  getReverseName: state => {    return state.name.split('').reverse().join('')  } }, // 类似 vue 里的 mothods(同步方法) mutations: {  updateName (state) {   state.name = 'newName'  } }, // 类似 vue 里的 mothods(异步方法) -------- 以下7行为新增 actions: {  updateNameAsync ({ commit }) {   setTimeout(() => {    commit('updateName')   }, 1000)  } }})

然后我们可以再我们的vue页面里面这样使用

methods: {  rename () {    this.$store.dispatch('updateNameAsync')  }}

三、 Module 模块化

当项目越来越大的时候,单个 store 文件,肯定不是我们想要的, 所以就有了模块化. 假设 src/store 目录下有这2个文件

moduleA.js

export default {  state: { ... },  getters: { ... },  mutations: { ... },  actions: { ... }}

moduleB.js

export default {  state: { ... },  getters: { ... },  mutations: { ... },  actions: { ... }}

那么我们可以把 index.js 改成这样

import moduleA from './moduleA'import moduleB from './moduleB'export default new Vuex.Store({  modules: {    moduleA,    moduleB  }})

这样我们就可以很轻松的把一个store拆分成多个.

关于"vuex进阶知识点的示例分析"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

函数 同步 文件 方法 时候 知识 代码 位置 状态 篇文章 知识点 示例 进阶 分析 多个 数据 更多 模块 行为 请看 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 华服互联网科技靠谱吗 亿人帮互联网科技有限公司 互联网科技工作委员会副主任毛军 科技互联网龙头 麻工互联网科技 中国互联网科技发展 互联网科技博客 深圳卡尔迅互联网科技有限公司怎么样 互联网巨头投资的硬核科技 金融科技与互联网金融相同和不同 互联网科技教育视频 互联网校园科技培训 厦门比较好的科技互联网公司 卓翼科技产业互联网合作 产业互联网科技服务公司 21世纪互联网科技成就 有人说阿里系是互联网科技企业 昆明中奇联合互联网科技 玉溪新华互联网科技怎么选 武汉亿视互联网科技有限公司 杭州互联网科技公司 互联网科技的未来发展 互联网科技公司招聘 互联网科技公司的市场部门 博兴的互联网电子科技公司 互联网保险科技创业 工业互联网展湾科技股份有限公司 四川互联网展示科技馆设计 互联网领先科技宣传片 本届互联网大会上的黑科技
0