在 vue3 组合 api 中动态添加包装器元素

Posted

技术标签:

【中文标题】在 vue3 组合 api 中动态添加包装器元素【英文标题】:Dynamically add wrapper element in vue3 composition api 【发布时间】:2022-01-21 23:13:36 【问题描述】:

考虑下面的一个组件,它接受tag 作为道具。


<template>
    <input v-model="model"/>
</template>
<script>
export default  
    name: "InputComponent",
    props: 
        tag: 
            type: String,
            required: false,
            default: null,
        
    

</script>

我想将道具div 传递为tag 值应该返回下面的dom。


<div>
   <input v-model="model"/>
</div>

有composition api的解决方案是有优势的。

【问题讨论】:

【参考方案1】:
<template>
    <component :is="tag">
        <input v-model="model"/>
    </component>
</template>
<script>
    export default  
        name: "InputComponent",
        props: 
            tag: 
                type: String,
                required: false,
                default: null,
            
        
    
</script>

应该可以。

【讨论】:

您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。 没有标签条件怎么办? 您可以使用v-ifv-else 或将渲染函数作为prop(标签)传递,以渲染包装器

以上是关于在 vue3 组合 api 中动态添加包装器元素的主要内容,如果未能解决你的问题,请参考以下文章

使用 nuxt-composition-api 在路由更改上重新初始化 Vue3 可组合函数

在 REST API 周围添加 graphql 包装器?

REST API 包装器设计:将动态 json 作为 JSON.NET JObject / JArray 返回

Web3js 在 Vue3 组合 api 项目中导入失败

组合式api

从零开始学习jQuery 管理jQuery包装集