简单了解vuex

161 阅读2分钟

什么是Vuex?

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

state

state里面存放的数据是响应式的,state是vuex中的基本数据,我们在没有使用state的时候,是直接在data中进行初始化的,当使用了state后,是直接将data上的诗句转移到了state上。

export default createStore({
  state: {
    arr:[]
  },
  mutations: {
  },
  actions: {
  },
  modules: {
  }
})

mutations

是store对象的一个属性,mutations被用于更新store中存放的所有状态,通常情况先,vuex要求mutations中的方法必须是同步。

export default createStore({
  state: {
    arr:[]
  },
  mutations: {
    arrFun(state,val){
      state.arr.push(val)
    }
  },
  actions: {
  },
  modules: {
  }
})

arrFun中有两个参数
第一个参数对应的是store对象中的state,通过这个参数来修改store中所保留的变量。
第二个参数是用来传递数据。

actions

是用于处理异步的方法,需要使用context中的commit属性提交到mutations中。actions是为了通过将mutations里面处理数据的方法变成可异步的处理数据的方法。

export default createStore({
  state: {
    arr:[]
  },
  mutations: {
    arrFun(state,val){
      state.arr.push(val)
    }
  },
  actions: {
    arrFunAsync(context,val){
      context.commit('arrFun',val)
    }
  },
  modules: {
  }
})

modules

可以让每一个模块拥有自己的state、mutations、actions、getters,能够更加方便进行管理。
分模块管理:

export default {
    state: {
        arr: [],
    },
    mutations: {
        getVal(state, val) {
            state.arr.push(val)
        }
    },
    actions: {
        getValAsync(context, val) {
            context.commit('getVal', val)
        }
    },
    namespaced: true,//命名空间!!!
}
import Vue from 'vue'
import Vuex from 'vuex'
import shop from './modules/shop.js'//引入
Vue.use(Vuex)

export default new Vuex.Store({
    modules: {
        shop,//使用
    },
})

getters

是store的计算属性,对state里面的状态进行过滤处理,与组件自身的计算属性一样。

export default createStore({
  state: {
    num:10
  },
  mutations: {
    
  },
  actions: {
 
  },
  modules: {
  },
  getters:{
    func(state){
      return state.num*10;//100
    }
  }
})