vuex概念和用法

1、概念:专门在vue中实现集中式状态(数据)管理的一个vue插件,对vue应用中多个组件的共享状态进行集中式的管理(读、写)也是一种组件间通信的方式,且适用于任意组件间通信。

2、什么时候使用vuex?

多个组件依赖于同一个状态 、来自不同组件的行为需要变更同一状态

3、读取vuex中的数据:$store.state.sum

4、组件中修改vuex中的数据:

$store.dispatch(''action中的方法名",数据) 或者 $store.commit(''mutations中的方法名",数据)

如果没有网络请求或其他业务逻辑,组件中也可以越过actions,不写dispatch,直接编写commit

5、创建store文件

可以追加一个getter文件,用于操作state中的数据(类似于  ”data里的数据和计算属性 “ 的关系  )

6、组件中使用

### Vue2 中 Vuex 的详细解释 Vuex 是专门为 Vue.js 应用程序设计的状态管理模式库。它采用集中式存储来管理所有组件的状态,并通过定义良好的规则确保状态变化的可预测性[^4]。 #### 安装与引入 为了在项目中使用 Vuex,首先需要安装该库: ```bash npm install vuex --save ``` 接着,在项目的入口文件或 store 文件夹下的 `index.js` 文件里引入并配置 Vuex: ```javascript import Vue from 'vue'; import Vuex from 'vuex'; Vue.use(Vuex); const store = new Vuex.Store({ state: { count: 0, }, mutations: {}, actions: {} }); export default store; ``` 此代码片段展示了如何创建一个新的 Vuex Store 实例,并将其导出以便后续引用[^3]。 #### 将 Store 挂载至 Vue 实例 为了让整个应用程序都可以访问到这个全局唯一的 Store 对象,需将上述创建好的 `store` 导入并在新的 Vue 实例初始化时传入: ```javascript import Vue from 'vue'; import App from './App.vue'; import store from './store'; // 假设 store 配置位于 src/store/index.js 下 new Vue({ el: '#app', render: h => h(App), store, // 注册 store 属性 }); ``` 完成这一步之后,所有的子组件都能够通过 `this.$store` 来获取当前的应用状态以及执行相应操作[^2]。 #### 核心概念解析 - **State**: 存储着应用中的数据模型,即共享的数据源; - **Getters**: 类似于计算属性,用于派生一些基于 State 的新信息; - **Mutations**: 提交更改请求的方法,唯一可以改变 State 地方,同步事务处理逻辑应放在这里面实现; - **Actions**: 可以包含异步操作流程控制,最终会提交 mutation 更新 State; - **Modules**: 当应用变得复杂时,允许我们将 store 划分为多个模块进行维护,每个模块拥有独立的状态、mutation、action getter[^1]。 #### 示例演示 下面是一个简单的计数器例子展示如何运用这些核心功能: ```javascript // store/index.js import Vue from 'vue'; import Vuex from 'vuex'; Vue.use(Vuex); const store = new Vuex.Store({ state: { counter: 0, }, getters: { doubleCounter(state) { return state.counter * 2; } }, mutations: { increment(state) { state.counter++; }, decrement(state){ state.counter--; } }, actions: { asyncIncrement({ commit }) { setTimeout(() => { commit('increment'); }, 1000); } } }); export default store; // 组件内部调用 methods:{ increase(){ this.$store.commit('increment'); // 同步修改state }, decrease(){ this.$store.dispatch('asyncIncrement'); // 异步修改state } } ``` 这段代码实现了基本的功能——增加/减少计数值,并且还提供了一个延迟一秒后再加一的操作作为异步案例说明。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值