Vuex

作者: Cynicism_ym | 来源:发表于2018-05-13 01:37 被阅读0次

vuex官方文档:https://vuex.vuejs.org/zh-cn/installation.html


vue是什么

Vuex 是一个专为 Vue.js应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,
并以相应的规则保证状态以一种可预测的方式发生变化,统一保管。便于维护。

vuex安装

首先我们在 vue.js 2.0 开发环境中安装 vuex :

npm install vuex --save-dev

然后在项目中的src里建一个store/store.js文件:

exprice/src/store/store.js

引入vuex到store文件

import Vue from 'vue'
import Vuex from 'vuex'
//相当于script标签中的src属性  引入安装过的vuex
Vue.use(Vuex)
let state={
        name:"张三"
}
export default new Vuex.Store({
    state
})

组建中引入mapstate辅助函数:

import {mapState} from 'vuex'

vue核心

1、State(基本数据)

vuex使用单一状态树,也就是一个对象包含了整个应用的所有状态,它作为唯一的数
据源。也就是说,每个应用仅有一个store实例。单状态树和模块化并不冲突——在后
面的章节里我们会讨论如何将状态和状态变更事件分布到各个子模块中。由于 Vuex
 的状态存储是响应式的,从 store 实例中读取状态最简单的方法就是在返回某个状态:
const Counter = {
  template: `<div>{{ count }}</div>`,
  computed: {
    count () {
      return store.state.count
    }
  }
}

2、Getters(计算属性 )

如果有多个组件需要用到此属性,我们要么复制这个函数,或者抽取到一个共享函数
然后在多处导入它——无论哪种方式都不是很理想。

Vuex 允许我们在 store 中定义“getter”(可以认为是 store 的计算属性)。就像计算属
性一样,getter 的返回值会根据它的依赖被缓存起来,且只有当它的依赖值发生了改
变才会被重新计算。

Getter 接受 state 作为其第一个参数:
const store = new Vuex.Store({
  state: {
    todos: [
      { id: 1, text: '...', done: true },
      { id: 2, text: '...', done: false }
    ]
  },
  getters: {
    doneTodos: state => {
      return state.todos.filter(todo => todo.done)
    }
  }
})

3、Mutation(提交更改数据的方法,同步!)

更改 Vuex 的 store 中的状态的唯一方法是提交 mutation。Vuex 中的 mutation 非常
类似于事件:每个 mutation 都有一个字符串的 事件类型 (type) 和 一个 回调函数
 (handler)。这个回调函数就是我们实际进行状态更改的地方,并且它会接受 state 作为第一个参数:
const store = new Vuex.Store({
  state: {
    count: 1
  },
  mutations: {
    increment (state) {
      // 变更状态
      state.count++
    }
  }
})

4、Action(像一个装饰器,包裹mutations,使之可以异步。)

Action 类似于 mutation,不同在于:
    Action 提交的是 mutation,而不是直接变更状态。
    Action 可以包含任意异步操作。
让我们来注册一个简单的 action:
const store = new Vuex.Store({
  state: {
    count: 0
  },
  mutations: {
    increment (state) {
      state.count++
    }
  },
  actions: {
    increment (context) {
      context.commit('increment')
    }
  }
})

5、module(模块化Vuex)

由于使用单一状态树,应用的所有状态会集中到一个比较大的对象。当应用变得非常
复杂时,store 对象就有可能变得相当臃肿。

为了解决以上问题,Vuex 允许我们将 store 分割成模块(module)。每个模块拥有
自己的 state、mutation、action、getter、甚至是嵌套子模块——从上至下进行同样
方式的分割:
const moduleA = {
  state: { ... },
  mutations: { ... },
  actions: { ... },
  getters: { ... }
}

const moduleB = {
  state: { ... },
  mutations: { ... },
  actions: { ... }
}

const store = new Vuex.Store({
  modules: {
    a: moduleA,
    b: moduleB
  }
})

store.state.a // -> moduleA 的状态
store.state.b // -> moduleB 的状态

相关文章

  • VUEX基本介绍,包含实战示例及代码(基于Vue2.X)

    VUEX 1 VUEX基本介绍 1.1 官方API 1.2 什么是vuex 1.3 Vuex使用场景 1、Vuex...

  • 【文档笔记】-Vuex

    什么是vuex? vuex文档: https://vuex.vuejs.org/zh/[https://vuex....

  • vuex配置

    vuex配置 目录 vuex的五个核心 配置vuex vuex持久化 一、vuex五个核心概念 State 定义状...

  • Vuex

    安装Vuex cnpm install vuex --save-dev Vuex是什么? 这是[Vuex的官网](...

  • Vuex

    1.Vuex概述 2.Vuex基本使用 3.使用Vuex完成todo案例 1.Vuex概述 Vuex是实现组件全局...

  • vuex

    Vuex介绍: Vuex官网:http://vuex.vuejs.org/ Vuex是实现数据状态管理的技...

  • vuex+axios 的开发流程记录

    相关文档 vuex: https://vuex.vuejs.org/zh/ 是否有必要使用vuex vuex是vu...

  • 2019-06-07

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

  • 配置 vuex 和 vuex 本地持久化

    配置 vuex 和 vuex 本地持久化 目录 vuex是什么 vuex 的五个核心概念State 定义状态(变量...

  • vuex

    配置 vuex 和 vuex 本地持久化 目录 vuex是什么 vuex 的五个核心概念State 定义状态(变量...

网友评论

      本文标题:Vuex

      本文链接:https://www.haomeiwen.com/subject/ybyhdftx.html