Vuex的使用|青训营

77 阅读1分钟

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式 + 库。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。 使用的时候需要我们基于脚手架初始化项目。

  • 第一步:npm i vuex --save/-S
  • 第二步: 创建store.js import vuex from 'vuex' import vue from 'vue'
  • 第三步:Vue.use(vuex)
  • 第四步:const store = new Vuex.Store({...配置项})
  • 第五步:导出 export default store
  • 第六步:导入main.js

状态state

  • 这一步用来存储所有组件的数据
const store = new vuex.Store({
    state: { 
       number: 0 
    } 
})
  • 在组件中使用
<div>数据:{{$store.state.number}}</div>
  • 计算属性
count () { return this.$store.state.number }

状态修改mutations

  • 这一步为了便于管理、监控所有数据的变化,vuex规定必须通过mutations修改数据,不可以通过store修改状态数据。
mutations: {
//这里以购物车的加减为例
    shoppingCartAdd (state, payload) {   //自定义名字
        // state表示Store中所有数据
        // payload表示组件中传递过来的数据
        state.number = state.number + payload
    },
    shoppingCartDec (state, payload) {
      state.number = state.number - payload
    }
}
  • 在组件中的使用
methods: {
    ...mapMutations(['shoppingCartAdd','shoppingCartDec'])
}

异步操作action

这一步主要用于异步处理,一般搭配axios使用

  • 定义
actions: {
    // 定义了一个action,用于查询接口数据
    async queryData (context, payload) {
        const ret = await axios.get('url')
        context.commit('shoppingCartAdd', ret.data.list)
    }
}
  • 在组件中的使用
methods: { 
        handleQuery () { 
        this.$store.dispatch('queryData', 200) 
     }
}

getters

buyList () {
  return this.$store.getters.getCartList;
},