vuex的使用——modules模块化

  • Post author:
  • Post category:vue


store文件夹目录

在这里插入图片描述

1、main.js

import store from '../store';

new Vue({
  store,
  render: h => h(App)
}).$mount('#app')

2、index.js

import Vuex from 'vuex';
import Vue from 'vue';
import purchaseInvoice from "./modules/purchase/purchase-invoice"
import purchaseRefund from "./modules/purchase/purchase-refund/index"

Vue.use(Vuex);

export default new Vuex.Store({
  modules: {
    purchaseInvoice,
    purchaseRefund 
  }
});

3、purchaseInvoice.js

import $http from "/http/http"
import "/http/axios"
import api from "/config/api/purchase"

const state = {
  detailRecord : [],
}

const mutations = {
  setLog(state, data) {
    state.detailRecord = data
  }

}

const actions = {
  getPurInvoiceDetail({ commit }, id) {
    $http
      .get({
        url: api.getPurInvoiceDetail + id,
      })
      .then((res) => {
        commit("setLog", res.data.data)
      })
  },
}

export default {
  state,
  getters,
  mutations,
  actions
}

4.purchaseRefund (引入index就可以全部引入了,写法和上面无差别)

在这里插入图片描述

5.调用方法

    // 触发mutation里的方法
   this.$store.commit("purchaseInvoice/setLog");

    // actions
   this.$store.dispatch("purchaseInvoice/getPurInvoiceDetail");

6.使用

import { mapState } from 'vuex'



  computed: {
    ...mapState({
      detailRecord : state => state.purchaseInvoice.detailRecord ,
    }),
    addForm: {
      get() {
        return this.$store.state.purchaseInvoice.addForm
      },
      set(from) {
        this.$store.commit('purchaseInvoice/setaddForm', from)
      }
    }
  },

mapState是什么?表面意思:mapState是state的辅助函数.

实际作用:当一个组件需要获取多个状态时候,将这些状态都声明为计算属性会有些重复和冗余。为了解决这个问题,我们可以使用 mapState 辅助函数帮助我们生成计算属性,让你少按几次键

…mapState并不是mapState的扩展,而是…对象展开符的扩展.当然如果你把他用在这里会发现他能使得代码看起来变得,更加符合常规逻辑

————计算属性是基于它们的响应式依赖进行缓存的————

get是基于其他的数据来获取到computed里定义的那个数据

set是根据computed里定义的那个数据来改变其他的数据



版权声明:本文为weixin_44683763原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。