手摸手教你在vue-cli里面使用vuex,以及vuex简介

简介: 写在前面:这篇文章是在vue-cli里面使用vuex的一个极简demo,附带一些vuex的简单介绍。有需要的朋友可以做一下参考,喜欢的可以点波赞,或者关注一下,希望可以帮到大家。本文首发于我的个人blog:obkoro1.com引入步骤我创建了一个新的vue-cli里面什么东西都没有,只引用了vuex,这里是码云地址,可以下载下来,然后npm install、npm run dev试试看,里面vuex的使用地方也全都注释了一遍。安装 npm install vuex --save

写在前面:

这篇文章是在vue-cli里面使用vuex的一个极简demo,附带一些vuex的简单介绍。有需要的朋友可以做一下参考,喜欢的可以点波赞,或者关注一下,希望可以帮到大家。


引入步骤

我创建了一个新的vue-cli里面什么东西都没有,只引用了vuex,这里是码云地址,可以下载下来,然后npm installnpm run dev试试看,里面vuex的使用地方也全都注释了一遍。

安装

npm install vuex --save

在src目录下创建文件夹vuex

image.png

该文件夹包含以上文件,创建好了之后,我们一个一个文件来说里面都有什么东西。

vuex/index.js

import Vue from 'vue';
import Vuex from 'vuex';
import status from './modules/status/index';//引进模块
Vue.use(Vuex);
export default new Vuex.Store({
  modules: {  
    //Vuex 允许我们将 store 分割成模块(module)。每个模块拥有自己的 state、mutation、action
    dataStatus:status,//访问这里面数据的时候要使用'dataStatus'
  },
});

这是vuex的主文件store,这个例子是把state、mutation、action分割成模块,然后再将每个模块引用进这个index.js文件里面,等我们整个文件夹的文件都搭好之后,还要把文件引入到main.js里面、

vuex/modules/status/index.js

import actions from './actions';
import mutations from './mutations';
//引入action和mutations 
export default {  
  state:{ //这里面是要读取或者写入数据的地方
      msg:'默认状态',
  },
  //state actions mutations顺序不能乱
  actions: actions,
  mutations: mutations,
}

这是一个模块里面的主文件,模块内部拥有自己的state、actions、mutions,是从上到下进行分割的。

vuex/modules/status/mutation_type.js

//这个js文件里面只是一些变量,把action和mutation文件里面相同变量名的链接起来
export const VUEX_TEST = 'VUEX_TEST';
// 一般使用的是大写来命名变量,因为尤大也是这么做 2333

vuex/modules/status/actions.js

import * as types from './mutation_type'; //引入变量
export default {
  actionFn({commit},data){ //actionFn是在组件通过dispatch触发的函数名 可以理解成组件和actions的连接
    commit(types.VUEX_TEST,data);
    //types.VUEX_TEST 是要commit到mutation的哪个位置 变量的作用
    //data 是传过来的参数
  }
};

vuex/modules/status/mutations.js

import * as types from './mutation_type';//引入变量
export default {
  //types.VUEX_TEST 代表接受哪个actions的commit 也就是上面引入变量的作用
  [types.VUEX_TEST](state,data){ 
    //第一个参数state是这个模块的state 第二个参数是传进来的数据 
    if(data.status==1){ //根据传进来的参数做各种操作
      //这里就是操作state了,赋值之后,各个组件上面引用该数据的地方会自动更新      
      state.msg=data.text;
    }else if(data.status==2){
        state.msg='奕迅';
    }
    //这里是随便写的一个栗子
    console.log(state.mg,data,'mutation'); 
  }
};

这两个文件里面有注释,解释的蛮清楚的。当把所有文件创建好了之后,再回过头来看看每个文件之间都有联系,多想想或许就懂点什么东西了 emmm

vuex文件夹,文件目录以及下载

引入main.js

image.png

上面的vuex文件夹只是搭建一个store,但是这样还不够,我们还要在项目里面使用这个。引用到main.js,如图所示。

组件中如何使用。

image.png

使用的话就是像上面那么使用,本文只是一个简单的示例,还有更多骚操作,等大家上手之后再慢慢摸索咯。

git地址

感觉写的蛮乱的,大家如果看不太懂的话,可以到码云去下载文件,然后自己跑一跑,多看看,试一试就应该没问题了。

vuex简介

通常我是希望大家先学会用,然后再了解后面的机制,每次我看博文的时候,一大段原理贴上来,都给我弄懵逼了。。

vuex主要是用来复杂项目之间的组件通信功能,简单的项目不要用这套复杂的事件以及状态管理机制。项目如果不够复杂的话推荐我之前写的:在vue项目中 如何定义全局变量 全局函数,使用全局变量的形式的也可以实现需求。

vuex实现的作用:数据共享机制

通过统一的数据中心store维护状态数据,每个组件进行更新的时候,通知数据中心store。再由stroe将共享的状态,触发每一个调用它的组件的更新。

image.png

vuex的工作流程

大家先仔细看看下面这张图,理解他的工作机制。

image.png

  1. 在vue组件里面,通过dispatch来触发actions提交修改数据的操作。
  2. 然后再通过actions的commit来触发mutations来修改数据。
  3. mutations接收到commit的请求,就会自动通过Mutate来修改state(数据中心里面的数据状态)里面的数据。
  4. 最后由store触发每一个调用它的组件的更新

注意:这套模型是单向流动的

目录
相关文章
|
4月前
|
存储 JavaScript 前端开发
Vue应用瘦身秘籍:揭秘Vuex如何重塑你的应用状态,让复杂变简单!🔥
【8月更文挑战第27天】在开发Vue应用时,随着应用规模的增长,组件间通信与状态共享问题日益复杂。Vuex作为Vue官方推荐的状态管理库,提供了集中式存储仓库来管理组件的共享状态,简化状态跟踪与组件通信。Vuex的核心概念包括state(存储状态数据)、mutations(同步修改state)和actions(处理异步操作)。通过一个购物车应用示例展示了如何定义state、mutations及actions,以及如何在Vue组件中使用这些状态管理功能。掌握Vuex有助于提高应用的健壮性和可维护性。
66 0
|
2月前
|
存储 JavaScript 前端开发
前端技术分享:使用Vue.js与Vuex管理状态
【10月更文挑战第1天】前端技术分享:使用Vue.js与Vuex管理状态
52 6
|
3月前
|
JavaScript
Vue3基础(24)___vue3中使用vuex
本文介绍了在Vue 3中如何使用Vuex进行状态管理,包括安装Vuex、创建store、定义state、mutations、actions、getters,以及在组件中使用这些选项。同时,还介绍了如何通过`$store`在组件内部访问和修改状态,以及如何使用命名空间对模块进行隔离。
124 3
|
4月前
|
存储 JavaScript
解锁Vuex高级玩法:模块化与插件共舞,让你的Vue项目状态管理如虎添翼!
【8月更文挑战第27天】Vuex是一款专为Vue.js应用程序设计的状态管理模式及库,它通过集中管理组件状态来确保状态变更的可预测性。在大型应用中,采用模块化管理可以让代码结构更加清晰,同时利用插件增强功能。模块化管理允许将store拆分为包含各自state、mutations、actions和getters的独立模块。插件则能监听状态变化,实现诸如日志记录或数据持久化等功能。本文通过具体示例介绍了如何在Vuex中实现模块化管理和插件的高级应用。
65 1
|
4月前
|
存储 缓存 监控
解锁Vuex性能优化的秘密:让大型Vue应用如丝般顺滑,紧跟技术热点,体验速度与效率的双重飞跃!
【8月更文挑战第27天】Vuex是Vue.js应用程序的状态管理解决方案,它允许开发者集中管理组件间共享的状态。然而,在大型应用中,庞大的状态树可能会影响性能。本文介绍几种优化策略:1)精简状态树,避免存储不必要的数据并通过模块化降低复杂度;2)利用getters缓存计算结果以提高效率;3)通过actions处理异步操作,确保状态更新的同步性和逻辑清晰;4)在组件级别上减少不必要的重渲染;5)使用工具如Vue Devtools进行监控和调试。这些方法有助于提升应用的整体性能和用户体验。
98 0
|
3月前
|
JavaScript
在 Vue 3 组件通信方式中,Provide / Inject 与 Vuex 的区别是什么?
在 Vue 3 组件通信方式中,Provide / Inject 与 Vuex 的区别是什么?
187 65
|
1月前
|
存储 JavaScript
Vue 状态管理工具vuex
Vue 状态管理工具vuex
|
2月前
|
JavaScript
《进阶篇第9章》学习vuex知识点后练习:求和案例_纯vue版代码
《进阶篇第9章》学习vuex知识点后练习:求和案例_纯vue版代码
17 1
|
2月前
|
存储 JavaScript 前端开发
深入理解 Vuex:Vue.js 状态管理的利器
【10月更文挑战第11天】 深入理解 Vuex:Vue.js 状态管理的利器
49 2
|
3月前
|
存储 JavaScript API
Vue3基础(25)___初尝pinia,相比于vuex轻量、好用
本文介绍了Pinia在Vue 3中的使用,相比于Vuex,Pinia更轻量且易于使用。文章详细解释了Pinia的基本概念、优势,并提供了安装和使用Pinia的步骤,包括定义状态、getters、actions和如何在组件中使用Pinia进行状态管理。
63 3
Vue3基础(25)___初尝pinia,相比于vuex轻量、好用