如何在Svelte组件内部获取当前组件的名称?
Svelte组件内部获取自身名称的实现方法
Svelte属于编译型框架,默认不会在运行时保留原始组件名称的元数据,没有公开的开箱即用API直接获取该值,对应你给出的代码示例,不同场景的填写方案如下:
开发调试场景(仅开发环境可用)
你可以依赖Svelte的内部API直接获取,省略号位置替换为如下逻辑即可:
<script> import { get_current_component } from 'svelte/internal' console.log('name of this component is', get_current_component().constructor.name) </script>
注意:
get_current_component属于Svelte非公开的内部API,生产环境构建时组件类名会被压缩为短字符,最终拿到的名称会是类似a、b的无效值,该方案仅适合本地开发调试使用。
全环境稳定可用场景
如果需要在生产环境也能稳定拿到正确的组件名,最稳妥的方式是显式声明组件名称,省略号位置直接填写你定义的常量即可:
<script> // 常量值和组件名保持一致即可 const CURRENT_COMPONENT_NAME = 'DemoComponent' console.log('name of this component is', CURRENT_COMPONENT_NAME) </script>
如果项目组件数量多,不想手动重复声明,可以自行编写编译插件(Vite/Rollup插件),在编译阶段根据.svelte文件的文件名自动注入组件名称变量,后续所有组件都可以直接读取该全局注入的变量即可。
内容的提问来源于stack exchange,提问作者geometer
相关产品推荐
相关产品推荐

