针对vuex个人理解(不做官方解释,纯属个人总结)

5 篇文章 0 订阅

先来说说vuex模块化的配置和访问

vuex模块化模板配置可以参考本人这个博客
vuex模板配置
主模块如下格式

import Vue from "vue";
import Vuex from "vuex";
Vue.use(Vuex);

//导入模块
import nav from "@/store/nav.js";
import shopping from "@/store/shopping.js";
// 用户信息
import user from "@/store/user.js";

const store = new Vuex.Store({
  modules: {
    nav,
    shopping,
    user,
  },
});

export default store;

子模块(shopping)如下格式

import api from "@/api/index.js";
export default {
  namespaced: true,
  state: {
    num: 0, //购物车总个数
  },
  mutations: {
    //购物车数量
    nums(a, b) {
      a.num = b;
    },
    //点击加入购物车存入数量
    nums2(a, b) {
      a.num += b;
    },
    //删除购物车,减少总数量
    nums3(a, b) {
      a.num -= b;
    },
  },
  actions: {
	nums4({commit},b){
		commit('num2',b)
		}
	},
};

在模板里(index为主模板,子模版为(nav,bar ))
以上模块名用于本文章讲解(上面随便起的名字)
主模板导入子模块并在model引入即可(逻辑都在子模块里)(具体配置看上面链接)
1.访问子模版的num数据的方式
1.在当前模块内使用mutations, actions,getters内部

 mutations: {
    //购物车数量
    nums(a, b) {
      a.num = b;
    },
  }

在mutations里面定义方法,参数一即是state数据,通过a.num获取到num值
2.在其他模块内访问数据

//引入主模块
import store from '/index.js'
//通过主模块打点直接使用
console.log(store.state.shopping.num)  //前两个直接访问的主模块数据,第四个访问的是主模块的model数据,再后面访问的为model内子模块的state内的数据

3.在vue组件内部,通过如下方式访问

this.$store.state.shopping.num   //前三个直接访问的主模块数据,第四个访问的是主模块的model数据,再后面访问的为model内子模块的state内的数据

//在html标签内使用不加this

2.访问子模块的mutations的方法的方式以及传参方式
1.在当前模块内使用mutations

在action内的方法,参数一都是store对象,可以直接调用,如下:
actions:{
	xj(a,b){
		a.commit('nums',12)  //通过store对象的commit方法去提交,参数一为当前模块的mutations里面的方法名,参数二为这个方法传入的参数
	},
	//也可以直接解构使用,方法如下:
	xj2({commit},b){
		commit('nums',12)  //通过store对象的commit方法去提交,参数一为当前模块的mutations里面的方法名,参数二为这个方法传入的参数
	},
}

在mutations里面定义方法,参数一即是state数据,通过a.num获取到num值
2.在其他模块内访问数据

//引入主模块
import store from '/index.js'
//通过主模块打点直接使用
store.commit('shopping/nums',12)  //commit提交mutations,括号内的参数一'/'的前面为子模块名,后面为mutations内的方法,参数二为传入的数据

3.在vue组件内使用

this.$store.commit('shopping/nums',12) //commit提交mutations,括号内的参数一'/'的前面为子模块名,后面为mutations内的方法,参数二为传入的数据

3.访问子模块的actions的方法的方式以及传参方式
在mutations里面定义方法,参数一即是state数据,通过a.num获取到num值
1.在其他模块内访问数据

//引入主模块
import store from '/index.js'
//通过主模块打点直接使用
store.dispatch('shopping/nums4',12)  //括号内的参数一'/'的前面为子模块名,后面为mutations内的方法,参数二为传入的数据

2.在vue组件内使用

this.$store.dispatch('shopping/nums4',12) //括号内的参数一'/'的前面为子模块名,后面为mutations内的方法,参数二为传入的数据

在html标签上不加this
<div @click="this.$store.dispatch('shopping/nums4',12)"></div>

这个action没有在当前模块使用过,就不写了
当然,除了以上三种,还有一种,但个人不常用,就不写了,具体你们可以百度mapState(访问state),mapMutations(访问mutations),mapActions(访问actions),也可以点击链接去看我这个博客,这是个模板配置,但注释写的还可以

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

萧寂173

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值