使用 provide / inject 实现深度嵌套组件中的父子组件传值问题时,父组件通过 provide 提供数据,子组件通过 inject 接收并使用这些数据。
inject 接收数据时出现了类型丢失的问题。
父组件中在 setup 中使用 provide 向子组件提供 类型为 number 的 companyId :
子组件通过 inject 接收数据时,类型为 unknown:
可以通过 Vue 提供的 InjectionKey<T> 类型工具实现类型的共享;
参考资料:VueUse 作者 Anthony Fu 分享可组合的 Vue_哔哩哔哩_bilibili 31:21- 33:43
通过在 ts 文件中定义:
在父组件中使用 provide 时可以写为:
在子组件中,通过 inject 就可以获取到父组件传值的类型: