Vue.js 使用条件渲染时,如何防止在每个条件上重复子组件?

Vue.js 使用条件渲染时,如何防止在每个条件上重复子组件?,vue.js,Vue.js,场景 我在Vue中有一个自定义按钮组件: <custom-button type="link">Save</custom-button> 你可以创建一个本地注册的组件 // in custom-button.vue components : { 'label' : {template : '<span class="btn-label"><slot></slot></span>'} } //在custom-but

场景

我在Vue中有一个自定义按钮组件:

<custom-button type="link">Save</custom-button>

你可以创建一个本地注册的组件

// in custom-button.vue
components : {
    'label' : {template : '<span class="btn-label"><slot></slot></span>'}
}
//在custom-button.vue中
组成部分:{
'标签':{模板:'}
}

您可以创建一个本地注册的组件

// in custom-button.vue
components : {
    'label' : {template : '<span class="btn-label"><slot></slot></span>'}
}
//在custom-button.vue中
组成部分:{
'标签':{模板:'}
}

在这种情况下,我可能会选择直接编写渲染函数,因为模板很小(带或不带),但如果要使用模板,则可以动态选择要渲染为该元素的内容,如下所示:

Vue.component('custom-button'{
模板:“#自定义按钮”,
道具:[
“类型”,
“href”,
],
计算:{
道具(){
返回this.type==='link'
?{is'a',href:this.href}
:{is:'button',type:this.type};
},
},
});
新Vue({
el:“#应用程序”,
});

按钮
提交
链接

在这种情况下,我可能会选择直接编写渲染函数,因为模板很小(带或不带),但如果要使用模板,则可以动态选择要渲染为该元素的内容,如下所示:

Vue.component('custom-button'{
模板:“#自定义按钮”,
道具:[
“类型”,
“href”,
],
计算:{
道具(){
返回this.type==='link'
?{is'a',href:this.href}
:{is:'button',type:this.type};
},
},
});
新Vue({
el:“#应用程序”,
});

按钮
提交
链接

我同意这种方法。但请注意,这是模板编译所必需的。这在实践中意味着什么?如果您使用的是构建工具,则将在构建过程中编译模板,否?否。例如,Vue具有和。运行时生成比完整生成小30%。这是使用运行时版本。您可以尝试使用
模板
属性,但该属性无效。在典型的vue cli项目中,默认情况下使用运行时生成。
中的代码是由
vue loader
编译的,而不是由vue直接编译的。我想我们谈论的是同一件事(交叉手指)。在生成过程中,模板由vue loader编译。如果您没有使用vue loader,则不应该使用vue运行时版本。我同意这种方法。但是,请注意,模板编译需要这样做,这在实践中意味着什么?如果您使用的是构建工具,则将在构建过程中编译模板,否?否。例如,Vue具有和。运行时生成比完整生成小30%。这是使用运行时版本。您可以尝试使用
模板
属性,但该属性无效。在典型的vue cli项目中,默认情况下使用运行时生成。
中的代码是由
vue loader
编译的,而不是由vue直接编译的。我想我们谈论的是同一件事(交叉手指)。在生成过程中,模板由vue loader编译。如果未使用vue加载程序,则不应使用vue运行时版本。
// in custom-button.vue
components : {
    'label' : {template : '<span class="btn-label"><slot></slot></span>'}
}