如何在 Vue.js 中将实例化的 Vue 组件作为道具传递?

Posted

技术标签:

【中文标题】如何在 Vue.js 中将实例化的 Vue 组件作为道具传递?【英文标题】:How to pass an instantiated Vue component as a prop in Vue.js? 【发布时间】:2021-09-07 18:54:26 【问题描述】:

我想将实例化的 Vue 组件作为道具传递给另一个组件,然后渲染它,如下所示:

<Button :icon=<IconComponent size="25" /> :link="http://wikipedia.org">Click here to visit Wikipedia</Button>

这至少是我在 React 中的做法。如何使用 Vue 实现相同的目标?

【问题讨论】:

看看 vuejs 插槽v3.vuejs.org/guide/component-slots.html 谢谢@Tracer69 - 我已经探索过插槽,但它们提供的语法不是我所追求的。我真的想编写我的组件模板,如问题中所示,我不觉得插槽语法可以实现这一点。万一我错过了什么——你能分享一段代码吗?谢谢! VueJS 不支持你想要的语法,所以你需要使用槽。 slot 语法完全符合您的预期:将内容交织到子组件中。 【参考方案1】:

你需要在子组件中使用命名槽:

<template>
  <button>
    <slot name="icon"></slot>
    <slot></slot>
 </button>
</template>

在父组件中:

<Button  link="http://wikipedia.org">
 <template #icon>
    <IconComponent size="25" />
 </template>
Click here to visit Wikipedia</Button>

【讨论】:

以上是关于如何在 Vue.js 中将实例化的 Vue 组件作为道具传递?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Vue.js 中将组件用作按钮

如何在 vue.js 中将卡片数据从一个组件绑定到另一个组件卡片?

如何在 Vue.js 中将数据从父组件发送到子组件

如何在 Vue.js 中将数据从 Test1 组件传递到 Test2 组件?

如何在 Vue Js 中将数据值从一个组件更改为另一个组件?

如何在 Vue JS 中将更新的值从父组件发送到子组件?