用Vue3.0+typescript写vuex的模块化拆分
用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的模块化拆分相关推荐
- Vue3.0 + typescript 高仿网易云音乐 WebApp
Vue3.0 + typescript 高仿网易云音乐 WebApp 前言 Vue3.0 的正式发布,让我心动不已,于是尝试用 vue3 实现一个完整的项目,整个项目全部使用了 composition ...
- vue3.0 + typescript openlayers实现地图标点、移动、画线、显示范围、测量长度、测量面积、画三角形、画正方形、画圆、线选、画笔、清除测量、清除、地图上展示弹窗等功能
vue3.0 + typescript openlayers实现地图标点.移动.画线.显示范围.测量长度.测量面积.画三角形.画正方形.画圆.线选.画笔.清除测量.清除地图所有等功能 由于最近项目中用 ...
- Vue3.0+TypeScript+Vite
Vue3.0 + TypeScript + Vite Vue3.0+TypeScript+Vite 项目创建(推荐使用yarn包管理器) 项目结构 main.ts App.vue: Compositi ...
- 来自一枚rookie的项目开发——vue3.0+typescript+element-plus+vue-router4+Pinia之动态路由(上)
动态路由(上) 配合动态路由的菜单(理论上可无限递归) <!-- 父组件 --> <template><div class="menu">< ...
- 一个简单案例教你如何用Typescript写Vuex
案例源代码: github.com/danielhuoo/- 前言 相信很多人都像我一样,学习使用了vuex后,想把项目改写成Typescript.但是官方教程要么晦涩难懂,要么缺少鲜活的例子.我花了 ...
- 来自一枚rookie的项目开发——vue3.0+typescript+element-plus+vue-router4+Pinia之动态路由(下)
路由守卫结合JWT token鉴权控制路由跳转 Pinia使用 import { defineStore } from 'pinia' import { Entity } from '../globa ...
- 【VUE】vue3.0后台常用模板
vue3.0后台常用模板: 1.vue-admin-perfect 在线预览 gitee国内访问地址:https://yuanzbz.gitee.io/vue-admin-perfect/#/home ...
- Vue3.0实践:使用Vue3.0做JSX(TSX)风格的组件开发
前言 我日常工作都是使用React来做开发,但是我对React一直不是很满意,特别是在推出React Hooks以后. 不可否认React Hooks极大地方便了开发者,但是它又有非常多反直觉的地方, ...
- vue3.0实战项目
vue3.0+typescript+vite2实战:后台管理系统 一.技术栈 二.功能架构 三.框架搭建 四.安装插件 1.路由插件vue-router4安装使用 2.vuex4的安装 3.安装sas ...
最新文章
- Linux内核子系统
- mkl gt;=2018
- tab与list配合使用
- java做条形图_使用Jfree实现吧条形图,java代码
- 使用 XML 实现 REST 式的 SOA
- PHP中的加强型接口Traits
- 腾讯官方游戏《陆战之王 3D坦克大战》
- python在自动化中的应用_python中在自动化运维的应用
- 设计模式之职责链(Chain of Responsibility)
- 快速查看当前APP包名
- 华为路由设置虚拟服务器命令,华为路由器配置ip命令
- 如何在两台服务器之间传输文件
- 如何用markdown排版公众号,使用排版神器Markdown Nice
- 峰值利用率80%+,视频云离线转码自研上云TKE实践
- 我的webgl学习之路(一)
- 单线复用有线Mesh组网案例
- 信源编码技术作业(1)——使用Audacity软件绘制清浊音频谱图并进行分析
- Redis的哨兵详解
- UML初步(to be continued~)
- BYOD应用的安全性
热门文章
- oracle简易版创建数据库,建立简易金融数据库
- mysql五日均线_原来5日均线是这样用的,你用对了吗?
- 三种项目成本估算方法
- js实现输入框防抖功能
- imagemagick的convert命令压缩图片
- 担任冬奥会火炬手,是一种怎样的体验?
- 應該是要敗大光圈定焦鏡頭35mmF2D 還是閃光燈呢 SB-600? SB-800??~~
- 临床专业有计算机课吗,2021热门专业排行公布,医学专业不再受欢迎,计算机专业稳定...
- 4.1.4 规划、设计的艺术(技术)流派和常用技法(上)
- 利用java打印心型、圆形图案