vuex 精简demo解析

Posted whyaza

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vuex 精简demo解析相关的知识,希望对你有一定的参考价值。

1.store/index.js 文件

import Vue from 'vue'
import Vuex from 'vuex'

//使用vuex
Vue.use(Vuex);

//一个store  , Vuex.store的 实例
const store = new Vuex.Store(
    state: 
        count : 1
    ,
    getters:            //  Getter相当于vue中的computed计算属性
        getStateCount: function(state) 
            return state.count + 1;
        
    ,
    mutations: 
        addition(state) 
            state.count = state.count + 1;
        ,
        reduction(state) 
            state.count = state.count - 1;
        
    ,
    actions:       //注册actions,类似vue里面的methods
        //通过这个修改state里面的值
        // 可以直接用mutations修改,但是官方建议使用actions去调用mutations去修改
        addition(context) 
            context.commit("addition");
        ,
        reduction(context)
            context.commit("reduction");
        
    
)

export default store

main.js

import store from './store/index'
new Vue(
  el: '#app',
  router,
  store,
  components:  App ,
  template: '<App/>'
)

App.vue

下面是vuex:this.$store.state.count 获得的数据:
    <h2>  this.$store.state.count  </h2>
    下面是vuex:this.$store.getters.getStateCount获得的数据:   
    <h2> this.$store.getters.getStateCount </h2>

    <button @click="addS">+</button>
    <button @click="reduceS">-</button>
export default 
    methods:
        addS() 
            //this.$store.commit("addition");
            this.$store.dispatch("addition");
        ,
        reduceS() 
            //this.$store.commit('reduction');
            this.$store.dispatch("reduction");
        
    
  ;

总结:

  1. vuex 功能和总线bus插件类似.对全局状态(数据)进行管理
  2. 使用dispatch调用actions中的方法,actions中的方法使用commit 调用mutations中的方法。
    在mutations中进行实际数据的修改。
  3. getters: Getter相当于vue中的computed计算属性 state : 里面装所有的状态(数据)

以上是关于vuex 精简demo解析的主要内容,如果未能解决你的问题,请参考以下文章

vuex及其五大核心功能运用解析

vuex 源码解析 mutation 详解

vuex中的辅助函数mapMutations详细解析

Vuex内容解析和vue cli项目中使用状态管理模式Vuex

如何使用 localStorage 修复 Vuex 中的 JSON 解析错误

返回承诺的 Vuex 操作永远不会解析或拒绝