用Vue3.0+typescript写vuex的模块化拆分

最近自己学习了下vue3.0+ts,在vuex这一块遇到些问题记录一下

以下代码中的写法请参考官方vuex文档:
https://next.vuex.vuejs.org/zh/guide/typescript-support.html#vue-%E7%BB%84%E4%BB%B6%E4%B8%AD-store-%E5%B1%9E%E6%80%A7%E7%9A%84%E7%B1%BB%E5%9E%8B%E5%A3%B0%E6%98%8E

目录结构如下:

message.ts代码:

export interface Message {total: number;
}const state: Message = {total: 123,
};export const dema = {namespace: true,state,
};

user.ts代码:

export interface User {name: string;age: number;
}const state: User = {name: "张三",age: 12,
};export const module = {namespace: true,state,
};

type.ts代码:

import { User } from "./modules/user/user";
import { Message } from "./modules/message/message";export interface demo {module: User;dema: Message;
}

index.ts代码:

import { InjectionKey } from "vue";
import { createStore, Store, useStore as baseUseStore } from "vuex";
//baseUseStore可以随意起名字
import { demo } from "./type";
import { module } from "./modules/user/user";
import { dema } from "./modules/message/message";export const key: InjectionKey<Store<demo>> = Symbol();
export const store = createStore<demo>({modules: {module,dema,},
});
export function useStore(): Store<demo> {return baseUseStore(key);
}

页面中调用即可拿到 index.vue:

<template><div>首页</div>
</template><script lang="ts">
import { defineComponent, onMounted } from "vue";
import { useStore } from "../store";
// import { useStore } from "vuex";
export default defineComponent({setup() {const store = useStore();onMounted(() => {console.log(store.state.module.name);});return {};},
});
</script><style></style>

注意:在modules中新添加模块后,需要重新npm run serve跑,不然会出现console.log能取到state中的属性值,但是页面报类型错误。重新运行就好了

有大佬知道为什么嘛?麻烦在评论区解答一下,感激不尽!

用Vue3.0+typescript写vuex的模块化拆分相关推荐

  1. Vue3.0 + typescript 高仿网易云音乐 WebApp

    Vue3.0 + typescript 高仿网易云音乐 WebApp 前言 Vue3.0 的正式发布,让我心动不已,于是尝试用 vue3 实现一个完整的项目,整个项目全部使用了 composition ...

  2. vue3.0 + typescript openlayers实现地图标点、移动、画线、显示范围、测量长度、测量面积、画三角形、画正方形、画圆、线选、画笔、清除测量、清除、地图上展示弹窗等功能

    vue3.0 + typescript openlayers实现地图标点.移动.画线.显示范围.测量长度.测量面积.画三角形.画正方形.画圆.线选.画笔.清除测量.清除地图所有等功能 由于最近项目中用 ...

  3. Vue3.0+TypeScript+Vite

    Vue3.0 + TypeScript + Vite Vue3.0+TypeScript+Vite 项目创建(推荐使用yarn包管理器) 项目结构 main.ts App.vue: Compositi ...

  4. 来自一枚rookie的项目开发——vue3.0+typescript+element-plus+vue-router4+Pinia之动态路由(上)

    动态路由(上) 配合动态路由的菜单(理论上可无限递归) <!-- 父组件 --> <template><div class="menu">< ...

  5. 一个简单案例教你如何用Typescript写Vuex

    案例源代码: github.com/danielhuoo/- 前言 相信很多人都像我一样,学习使用了vuex后,想把项目改写成Typescript.但是官方教程要么晦涩难懂,要么缺少鲜活的例子.我花了 ...

  6. 来自一枚rookie的项目开发——vue3.0+typescript+element-plus+vue-router4+Pinia之动态路由(下)

    路由守卫结合JWT token鉴权控制路由跳转 Pinia使用 import { defineStore } from 'pinia' import { Entity } from '../globa ...

  7. 【VUE】vue3.0后台常用模板

    vue3.0后台常用模板: 1.vue-admin-perfect 在线预览 gitee国内访问地址:https://yuanzbz.gitee.io/vue-admin-perfect/#/home ...

  8. Vue3.0实践:使用Vue3.0做JSX(TSX)风格的组件开发

    前言 我日常工作都是使用React来做开发,但是我对React一直不是很满意,特别是在推出React Hooks以后. 不可否认React Hooks极大地方便了开发者,但是它又有非常多反直觉的地方, ...

  9. vue3.0实战项目

    vue3.0+typescript+vite2实战:后台管理系统 一.技术栈 二.功能架构 三.框架搭建 四.安装插件 1.路由插件vue-router4安装使用 2.vuex4的安装 3.安装sas ...

最新文章

  1. Linux内核子系统
  2. mkl gt;=2018
  3. tab与list配合使用
  4. java做条形图_使用Jfree实现吧条形图,java代码
  5. 使用 XML 实现 REST 式的 SOA
  6. PHP中的加强型接口Traits
  7. 腾讯官方游戏《陆战之王 3D坦克大战》
  8. python在自动化中的应用_python中在自动化运维的应用
  9. 设计模式之职责链(Chain of Responsibility)
  10. 快速查看当前APP包名
  11. 华为路由设置虚拟服务器命令,华为路由器配置ip命令
  12. 如何在两台服务器之间传输文件
  13. 如何用markdown排版公众号,使用排版神器Markdown Nice
  14. 峰值利用率80%+,视频云离线转码自研上云TKE实践
  15. 我的webgl学习之路(一)
  16. 单线复用有线Mesh组网案例
  17. 信源编码技术作业(1)——使用Audacity软件绘制清浊音频谱图并进行分析
  18. Redis的哨兵详解
  19. UML初步(to be continued~)
  20. BYOD应用的安全性

热门文章

  1. oracle简易版创建数据库,建立简易金融数据库
  2. mysql五日均线_原来5日均线是这样用的,你用对了吗?
  3. 三种项目成本估算方法
  4. js实现输入框防抖功能
  5. imagemagick的convert命令压缩图片
  6. 担任冬奥会火炬手,是一种怎样的体验?
  7. 應該是要敗大光圈定焦鏡頭35mmF2D 還是閃光燈呢 SB-600? SB-800??~~
  8. 临床专业有计算机课吗,2021热门专业排行公布,医学专业不再受欢迎,计算机专业稳定...
  9. 4.1.4 规划、设计的艺术(技术)流派和常用技法(上)
  10. 利用java打印心型、圆形图案