在vue2和vue3中Vuex的使用及其持久化存储,mutation和actions的区别

本文详细介绍了Vuex在Vue项目中的核心概念,包括state、getters、mutations和actions的区别,以及模块化管理的实践。通过实例演示了如何配置、使用和处理异步操作,重点突出了Vuex在状态持久化存储和合理组织大型项目的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

就像官网所说的  vuex  就是一个用来做状态管理的库,它就像一个仓库一样存了许多的状态和方法

哪个组件使用,我们就直接在那个组件中引用就行.

在vuex中,有state,getters,mutations,actions,modules这些属性

state,类似于组件中的data,用来存放数据

getters,类似于组件中的computed

mutations,类似于组件中的methods

actions,提交mutions的

modules,把以上4个属性进行细分,让仓库更好的管理

当然,说归说,我们还是要看一下在实际中怎么进行使用

先安装一下: 

npm install vuex@next --save

 先创建一个文件夹

基本配置 

在vue2中

这样  我们就完成了基本的一个配置

在vue3中

 我们需要先在main.js中将store.js导入进来  并 挂载

 这样  我们也完成了基本的一个配置

接下来,进行使用.先从state开始:

 不论vue2和vue3

state相当于组件的data

我们直接在这里写一个str

然后   导入 并 使用

 效果:

然后,看一下getters

 不论vue2和vue3

 这个getters就类似于computed计算属性   所以我们就会发现这个1也只是打印了一次

 导入并使用

 效果

接下来mutations

 不论vue2和vue3

mutations就相当于组件的methods

 导入组件中 使用

 效果

 接下来Actions

  不论vue2和vue3

 在组件中导入并使用

 结果

到这里  我们就发现  一个问题,感觉mutations和这个Actions好像   都是一个方法然后 也都能实现 同样的功能   除了 参数有点不一样以外   

那么这两个到底有什么区别??

我们可以引入异步 再来进行操作一下

mutations:

 效果

 

我们发现  使用mutations 中的方法   在异步操作的时候  视图更新了 而 这个数据却没有变化

当我们换成Actions

 使用Actions将mutations这个里面的方法commit出去  以后  我们这个  视图 和数据就同步更新了

也就解决了异步的需求

最后,我们看一下modules

  不论vue2和vue3

假设  一个 这样的场景   我们有一个  项目 有50以上的state

这样的话  我们应该怎么去管理这个东西

都写在这一个  页面  会感到  比较复杂   难以区分

这时候   就有了  modules

 我们创建两个单独的文件

cate.js中

 path.js中

 然后  统一导入到store.js中

 然后  我们想要在组件中使用cate.js和path.js中的数据时

 效果:

 ok  这样就把所有的  Vuex的属性给做完了 基本上的使用 就这样

然后,来看一下  持久化存储

持久化存储的话,有两个实现方式

一个是自己手动localStorage

 另一个就是使用vuex-persist等插件

 

### Vue3Vuex使用教程 #### 安装 Vuex 对于 Vue 3 应用程序,推荐安装最新版本的 Vuex。可以通过 npm 或者 yarn 来完成安装[^3]。 ```bash npm install vuex@next --save yarn add vuex@next --save ``` #### 创建 Store 实例 在 Vue 3 Vuex 结合使用的场景下,创建 store 实例的方式略有不同。下面是一个基本的例子来展示如何设置一个 Vuex store: ```javascript import { createStore } from &#39;vuex&#39; const store = createStore({ state () { return { count: 0 } }, mutations: { increment (state) { state.count++ } }, actions: { increment ({ commit }) { commit(&#39;increment&#39;) } } }) export default store; ``` 这段代码展示了如何初始化一个新的 Vuex store 并导出它以便可以在应用中使用[^1]。 #### 集成到 Vue 应用 为了让 Vuex store 能够被整个应用程序访问,在创建 Vue 实例时需要传递 `store` 参数给根组件选项对象: ```javascript import { createApp } from &#39;vue&#39; import App from &#39;./App.vue&#39; import store from &#39;./store&#39; // 假设上面的 store 文件位于 src/store.js createApp(App).use(store).mount(&#39;#app&#39;) ``` 这样做的目的是让所有的子组件都可以轻松地获取状态数据以及触发相应的操作。 #### 组件中的使用方式 当 Vuex 已经集成到了项目里之后,就可以很方便地读取全局状态或是提交变更请求了。比如在一个 `.vue` 单文件组件内部可以直接利用计算属性方法来进行交互[^2]: ```html <template> <div class="example"> {{ count }} <button @click="increment">Increment</button> </div> </template> <script> export default { computed: { count() { return this.$store.state.count } }, methods: { increment() { this.$store.dispatch(&#39;increment&#39;) } } } </script> ``` 此部分介绍了如何在单文件组件中通过 `$store` 访问共享的数据源并执行相应的行为。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值