Vuex(一)

简介: Vuex是一个专为vue.js应用程序开发的状态管理模式。他采用集中式存储来管理应用程序中所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。Vuex也集成到了vue的官网调试工具vue-devtools中,提供了诸如零配置的time-travel调试、状态快照导入导出等高级调试功能

Vuex是一个专为vue.js应用程序开发的状态管理模式。他采用集中式存储来管理应用程序中所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。Vuex也集成到了vue的官网调试工具vue-devtools中,提供了诸如零配置的time-travel调试、状态快照导入导出等高级调试功能

Vuex安装

使用npm安装方式,安装命令如下:

npm install vuex

注意如果报错npm ERR! code ERESOLVEnpm ERR! ERESOLVE unable to resolve dependency tree的话要使用下面这个命令,这个报错是因为npm版本太高:

npm install vuex --legacy-peer-deps

在main.js文件中导入Vuex,并安装Vuex插件,代码如下:

import Vuex from 'vuex'
Vue.use(Vuex)

import Vuex from 'vuex'是导入vuex

Vue.use(Vuex)是安装Vuex插件

基本用法

Vuex使用单一状态树,用一个对象包含了所有应用层级的状态,作为唯一数据源(single source of truth)而存在,每一个Vuex应用的核心就是store,store可理解为保存应用程序状态的容器

store与普通的全局对象的区别有以下两点:

  1. Vuex的·状态存储是响应式的。当Vue组件从store中检索状态的时候,如果store中的状态发送变化,那么组件也会相应地得到高效更新
  2. 不能直接改变store中的状态,改变store中的状态的唯一途径就是显式地提交mutation,这可以确保每个状态更改都留下可跟踪的记录,从而能够启用一些工具来帮助我们更好地理解应用

创建一个store代码如下:

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

state:{}状态数据放到state选项中

mutations:{}选项中第一修改状态的方法 这些方法接收state作为第一个参数

在组件中访问store中的数据可以直接使用store.state.count

在组件中展示store中的状态,使用计算属性来返回store的状态。代码如下:

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

之后在组件的模板中就可以直接使用count。当store中的count发送改变时,组件内的计算属性count也会同步发生改变

更改store状态要遵照Vuex的要求:通过提交mutation来更改store中的状态。在严格模式下如果store中的状态改变不是由mutation函数引起的,则会抛出错误,而且如果直接修改store中的状态,Vue的调试工具也无法跟踪状态的改变,在开发阶段可以启用严格模式,以避免直接的状态修改,在创建store的时候,传入strict:true。代码如下:

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

Vuex中的mutation非常类似于事件:每个mutation都有一个字符串的事件类型和一个处理器函数,这个处理器函数就是实际进行状态更改的地方,他接收state作为第一参数,

我们不能直接调用一个mutation处理器函数,mutation选项更像是事件注册,当触发一个类型为increment的mutation时,调用此函数要调用一个mutation处理器函数,需要用他的类型去调用store。commit方法,代码如下:

store.commit("increment")


作者:xiao_kai

链接:https://juejin.cn/post/7112403250837471263

来源:稀土掘金

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

目录
相关文章
|
18天前
|
存储 JavaScript 前端开发
vuex使用
vuex使用
|
23天前
|
存储 JavaScript API
vuex的使用
vuex的使用
10 0
|
3月前
|
存储 JavaScript
什么是vuex
什么是vuex
18 0
|
4月前
vuex
vuex
27 0
|
存储 JavaScript
关于Vuex的简单实际应用
关于Vuex的简单实际应用
关于Vuex的简单实际应用
|
存储 缓存 资源调度
Vuex
Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式 + 库。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。
Vuex
|
存储 JavaScript API
vuex初步认识
Action 函数接受一个与 store 实例具有相同方法和属性的 context 对象,因此你可以调用 context.commit 提交一个 mutation,或者通过 context.state 和 context.getters 来获取 state 和 getters。当我们在之后介绍到 Modules 时,你就知道 context 对象为什么不是 store 实例本身了。
69 0
|
存储 缓存 JavaScript
Vuex(三)
Vuex是一个专为vue.js应用程序开发的状态管理模式。他采用集中式存储来管理应用程序中所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。Vuex也集成到了vue的官网调试工具vue-devtools中,提供了诸如零配置的time-travel调试、状态快照导入导出等高级调试功能
109 0
|
JavaScript 定位技术
初识Vuex
初识Vuex
98 0