vue 全球注册的组件命名在采用PascalCase时转换为kebap-case,

nfg76nw0  于 2个月前  发布在  其他
关注(0)|答案(2)|浏览(39)

版本

2.5.15

重现步骤

目前,所有全局注册的组件都会自动将其名称转换为kebap-case。

// register component
Vue.component('RouterLink', {...})

// get component fails, returns undefined
Vue.component('RouterLink')

// get component works, returns the component
Vue.component('router-link')

如果在注册函数调用时提供了PascalCase命名,那么希望已注册的组件也可以通过它们的PascalCase命名进行访问。这也意味着您可以在.vue模板中使用PascalCase命名,这是一种快速区分Vue组件和HTML元素的好方法。目前还不能实现这一点,要使其正常工作,需要使用以下代码:

<template>

  <RouterLink :to="link">Link</RouterLink>

</template>
<script>
{
    components: {
       RouterLink: Vue.component('router-link')
   }
}
</script>

预期结果

如果在注册函数调用时提供了PascalCase命名,则应能够通过其PascalCase命名访问全局注册的组件。

实际发生的情况

目前,组件命名始终转换为kebap-case。

8yoxcaq7

8yoxcaq71#

你可能想表达的是相反的意思:

Vue.component('FooLink', { template: `<p>Foo</p>` })

!!Vue.component('FooLink') // -> true
!!Vue.component('foo-link') // -> false (should be true)
iibxawm4

iibxawm42#

你是对的,对不起我的错误。我最近尝试使用VueRouter与RouterLink,但没有成功。查找仓库后看到了Vue.component('RouterLink', Link),这让我感到困惑。然而,这不是我实际使用的版本3.0.1,它仍然在进行Vue.component('router-link', Link)

相关问题