美文网首页
Vuex状态管理

Vuex状态管理

作者: Haohao_95 | 来源:发表于2018-07-03 11:37 被阅读0次

整体印象:用于维护一个或多个State,在整个Vue工程中共享数据

数据仓储模型

数据仓储模型

数据同步模型

数据同步模型

使用Vuex仓库

要使用vuex仓库,需要先安装vuex组件。之后引入Vuex到其main.js中(就是根组件)然后再注册该组件

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

之后声明store(Store可以再main.js中声明也可以单独建立文件声明)
其中可以添加五种选项。主要的选项包括:state,mutations,actions
简单来说,state中设置参数。getter中接收State并设置对State中数据进行处理返回。mutations中接收state并设置对state进行处理的函数。actions中接收dispatch中传来的命令(指定函数与操作),在指定函数内部进行与外部的异步数据交换,之后执行commit跳转到mutation阶段。

let store = new Vuex.Store({
  state: {
    totalPrice: 0
  },
  getters: {
    getTotal (state) {
      return state.totalPrice
    }
  },
  mutations: {
    increment (state, price) {
      state.totalPrice += price
    },
    decrement (state, price) {
      state.totalPrice -= price
    }
  },
  actions: {
    increase (context, price) {
      context.commit('increment', price)
    }
  }
})

使用逻辑:

其中state是存储公有状态的元素。Mutation通过函数直接修改state。而actions通过commit来调用Mutation的函数。而组件通过dispatch方法来使用action中的函数。Actions中可以调用api,其它的不可以。

commit函数:

a) 在action中的commit函数:


action的commit

需要引入context与要传入的参数(price)
其中commit的参数,第一个是要使用的mutation中的函数(’increment’),第二个是需要传递给mutation的参数。
b) 在组件中直接使用commit函数,跳过action阶段:

在组件中的方法中使用commit

直接使用this.store调用commit函数

dispatch函数

在组件的methods中声明,并使用相应的action


dispatch方法的使用

其中第一个参数是要使用的action函数,第二个参数是要传递的参数信息。

getters组件

getters用来直接或带处理的获取state的值并返回。
在store中设置一个getter函数,之后在组件中调用函数。
例如:

computed: {
    getTotal () {
      return this.$store.getters.getTotal()
    }
  }

Modules组件

声明多个module以切分整理state中繁杂的仓库参数,其中最简单的实现情况:

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`'s state
store.state.b // -> `moduleB`'s state

在多module环境下,其中的state参数都代表本地的state。如果要使用主store的state则用rootState

官方建议的文档组织形式

├── index.html
├── main.js
├── api
│   └── ... # abstractions for making API requests
├── components
│   ├── App.vue
│   └── ...
└── store
    ├── index.js          # where we assemble modules and export the store
    ├── actions.js        # root actions
    ├── mutations.js      # root mutations
    └── modules
        ├── cart.js       # cart module
        └── products.js   # products module

主文件为index.js,其中的actions与mutations方法都被分离为单独的文件。

相关文章

  • Vuex状态管理模式

    Vuex是什么? Vuex是一个专为Vue.js应用程序开发的状态管理模式Vuex是全局的状态管理 Vuex用来做...

  • Vue知识总结(2)

    Vuex状态管理 Vuex是专门为Vue应用程序提供的状态管理模式,每个Vuex应用的核心是store(仓库),即...

  • vuex二次总结

    Vuex状态管理 每个Vuex应用的核心是store(仓库)Vuex是专门为Vue应用程序提供的状态管理模式,每个...

  • Vue2技术栈归纳与精粹(下篇)

    Vuex状态管理 Vuex是专门为Vue应用程序提供的状态管理模式,每个Vuex应用的核心是store(仓库),即...

  • vuex状态管理:vuex

    什么是vuex? vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组...

  • 15-Vuex基础

    Vue之vuex状态管理 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。 这个Vuex包含以下几...

  • Vue学习笔记(三)

    一. 状态管理 Vuex 1. Vuex使用 Vuex是一个专为 Vue.js 应用程序开发的状态管理模式。它采用...

  • vuex

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

  • vuex基础

    1.vuex是什么? 状态管理模式,集中式存储管理,多组件需要共享状态时使用vuex 1.1状态管理模式 单个组件...

  • vueX是什么?

    官方解释:Vuex时一个Vue.js应用程序开发的状态管理模式 状态管理是什么? 管理什么状态呢? vueX实例格...

网友评论

      本文标题:Vuex状态管理

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