关于拿不到注入 以及 InjectionKey ts报错的疑问

来源:3-21 Provide - Inject

慕圣4449978

2022-09-28

图片描述

在看官网的时候看到 InjectionKey<string> 有几点疑问:

  1. InjectionKey<string> 是用来规范注入值的类型对吗?

  2. 那么我如下的写法 想要注入的值为对象 为什么ts会报错呢
    图片描述

  3. 为什么我在全局注入的 ‘globalUser’ ,在app.vue页面inject可以正常拿到数据,但在app.vue中使用的异步组件下inject却拿不到注入的数据呢?
    图片描述图片描述

写回答

1回答

张轩

2022-09-29

同学你好,分别回答一下:

1 对 泛型中 应该传入的是对应的类型。

2 你的写法不对,应该是使用 Symbol,如下代码:

// main.ts
export const key = Symbol() as InjectionKey<{ name: string }>
// 这这里,它会检验 provide 的第二个参数是否正确
app.provide(key, { name: 'viking' })

// 使用的地方
import { key } from '../main'
const currentUser = inject(key)
// 你会发现 currentUser 现在有类型了~

3 方面的话请提供一下代码库(git),我在本地帮你看一下,谢谢

0
0

Vue3 + TS 仿知乎专栏企业级项目

带你完成前后端分离复杂项目,率先掌握 vue3 造轮子技能

3142 学习 · 2313 问题

查看课程