Vuex----vue的状态管理模式

Posted guizimo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vuex----vue的状态管理模式相关的知识,希望对你有一定的参考价值。

Vuex----vue的状态管理模式

博客说明

文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢!

简介

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式,它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化,Vuex 是繁琐冗余的,一般用于大型项目。

官方文档

https://vuex.vuejs.org/zh/guide/state.html

安装

进入到项目目录里面

cnpm install vuex --save

核心概念

State(单一状态树)

意思就是用一个对象就包含了全部的应用层级状态。至此它便作为一个“唯一数据源”而存在。这也意味着,每个应用将仅仅包含一个 store 实例

// 创建一个 Counter 组件
const Counter = {
  template: `<div>{{ count }}</div>`,
  computed: {
    count () {
      return store.state.count
    }
  }
}

Getter(State的派生)

有时候需要从store 中的 state 中派生出一些状态,所以就会用到getter了

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)
    }
  }
})

Mutation(State唯一的改变方法)

更改 Vuex 的 store 中的状态的唯一方法是提交 mutation。Vuex 中的 mutation 非常类似于事件:每个 mutation 都有一个字符串的 事件类型 (type) 和 一个 回调函数 (handler)

const store = new Vuex.Store({
  state: {
    count: 1
  },
  mutations: {
    increment (state) {
      // 变更状态
      state.count++
    }
  }
})

Action(提交而不改变)

Action 提交的是 mutation,而不是直接变更状态,它 可以包含任意异步操作。

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

Module(分割模块)

由于使用单一状态树,应用的所有状态会集中到一个比较大的对象,可以将store对象分割成一些模块。

感谢

vuex

以及勤劳的自己

以上是关于Vuex----vue的状态管理模式的主要内容,如果未能解决你的问题,请参考以下文章

VueX(Vue状态管理模式)

VueX(Vue状态管理模式)

vue.js vuex store(参考)

Vue 笔记(三)- vuex, vue-router

vuex

4-Vue中的状态管理模式