简单写写vuex

文章介绍了如何在Vuex中实现模块化,通过在store/index.ts引入并创建模块,如globStore,启用了命名空间以避免属性冲突。getters和mutations用于处理状态,actions用于提交变更。此外,还提出可以封装getters和dispatch方法以减少重复代码。
摘要由CSDN通过智能技术生成

直接用模块化吧  毕竟多了就需要模块化 少了 用一个模块化也没问题

首先在store/index.ts 中

import { createStore } from "vuex";
import globStore from "./glob-store";
export default createStore({
  modules: {
    globStore,
  },
});

然后 就是 我们的模块 globStore

export default {
  namespaced: true, //开启命名空间  有了这个才会有 模块名/属性名
  state: {
    //用户名
    userName: "",
  },
  getters: {
    userName(state: any) {
      return state.userName;
    },
  },
  mutations: {
    setUserName(state: any, name: string) {
      state.userName = name;
    },
  },
  actions: {
    setUserName(context: any, name: string) {
      context.commit("setUserName", name);
    },
  },
};

就完成了  加了命名空间  其实就和普通的一个store 没啥区别了  不过 使用的时候 他就会给你加一个 模块名/属性名  等于是不重名的属性了 state 还是的连续点进去

我试了试 直接{{ store.store.***.****}} 在vue里就是响应式的了 

当然 也可以用computed  明确的变为响应式(直接都是这么做ode  上面的就是好奇试试)

每次都getter 和dispath  需要写很多重复的代码  也可以简单的封装一下 就不用一遍遍store.dispatch 了

import store from "./index";
export default {
  getters(moduleName: string, attribute: string) {
    return store.getters[moduleName + "/" + attribute];
  },
  dispatch(moduleNmae: string, attribute: string, params: any) {
    store.dispatch(moduleNmae + "/" + attribute, params);
  },
};

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值