Subscribe on changes!

无法直接使用全局自动导入的命名空间组件

avatar
Jul 25th 2023

Vue version

^3.3.4

Link to minimal reproduction

https://github.com/Handpear/vue-namespace-components-test

Steps to reproduce

我使用 unplugin-auto-import 这个插件(最新版)将我自定义的组件生成了自动导入,可以看到在 script 标签中打印了四组变量,分别是手动导入、全局自动导入、全局自动导入的引用、全局自动导入的解构,当我将他们作为组件渲染时,发现只有全局自动导入的组件无法渲染(请忽略图中的TS报错,在实际项目中类型是没问题的),并且得到了一个报错,似乎组件被解析为了自定义标签?我刚接触 Vue,在以往的 React 项目中同样的用法并没有这样的问题,所以可能并不是 unplugin-auto-import 或者 vite 的问题?

image

image

image

What is expected?

无需在 script 标签中重新声明组件即可直接使用命名空间组件

What is actually happening?

需要在 script 标签中以 引用或解构的方式再次声明组件才能正确渲染

System Info

No response

Any additional comments?

No response

avatar
Jul 26th 2023

unplugin-auto-import 这个插件并不适合自动导入组件,然后在模板中使用。在模板中使用时,会被解析成_resolveComponent("UiAuto.ButtonA"),这是去获取注册的组件,但UiAuto.ButtonA并没注册,所以会失败。

avatar
Jul 26th 2023

跟 vue-core 没关系。先去 unplugin-auto-import 的仓库提一个 issue 吧。

avatar
Aug 2nd 2023

跟vue-core没关系。先去unplugin-auto-import的仓库提一个问题吧。

emmmmmmm...谢谢你的建议,但我不认为 unplugin-auto-import 有什么问题,因为在 react 或 vue tsx 中这种方式工作良好,它仅在 vue component 中失效

avatar
Aug 2nd 2023