vuex模块下的使用

在store文件夹下的index.js

import Vue from 'vue'
import Vuex from 'vuex'
import axios from 'axios'
import user from './modules/user'
import product from './modules/product'

Vue.use(Vuex)

// 不能访问this
const store = new Vuex.Store({
    // state: {
    //     userList: [1, 1, 1]
    // },
    modules: {
        user,
        product
    }
})

export default store

store文件夹下建立modules文件夹,建立

const product = {
    namespaced: true,
    state: {
        productList: [23, 56, 89, 34],
        total: 100
    },
    actions: {
        changeProductList({ commit }) {
            commit("CHANGE_PRODUCT_LIST", [5, 6, 7])
        },
        changeTotal({ commit }) {
            commit("CHANGE_TOTAL", 'Jenny')
        },
        changeUserList({ commit }) {
            console.log('product模块-changeUserList');
        }
    },
    mutations: {
        CHANGE_PRODUCT_LIST: (state, payload) => state.productList = payload,
        CHANGE_TOTAL: (state, payload) => state.total = payload
    },
    getters: {
        filterProduct: state => state.productList.filter(item => item > 40)
    }
}
export default product

组件中使用

<template>
  <div class="product">
    商品---{{ total }}

    <p><button @click="changeTotal">修改total</button></p>
    <p>
      <button @click="changeProductList([123, 567, 10])">
        修改productList
      </button>
    </p>
    <p>getters: {{ filterProduct }}</p>
  </div>
</template>

<script>
import { mapState, mapGetters, mapMutations, mapActions } from "vuex";
export default {
  computed: {
    // total() {
    //   return this.$store.state.product.total;
    // },
    // filterProduct() {
    //   //错误写法
    //   // return this.$store.getters.product.filterProduct;

    //   //正确
    //   return this.$store.getters["product/filterProduct"];
    // },
    ...mapState({
      total: (state) => state.product.total,
    }),
    ...mapGetters({
      filterProduct: "product/filterProduct",
    }),
  },
  methods: {
    // changeTotal() {
    //   this.$store.dispatch("product/changeTotal");
    // },
    // changeProductList() {
    //   this.$store.commit("product/CHANGE_PRODUCT_LIST", [1, 2, 78, 90]);
    // },
    ...mapActions({
      changeTotal: "product/changeTotal",
    }),
    ...mapMutations({
      changeProductList: "product/CHANGE_PRODUCT_LIST",
    }),
  },
};
</script>

<style>
</style>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值