vue3渲染子组件的方式
在Vue 3中,渲染子组件的方式主要有以下几种:
1. 使用<script setup>语法:在父组件中,你可以使用<script setup>语法来定义和渲染子组件。使用这种方式,你不需要显式地声明组件的模板,因为它会自动与子组件的逻辑相结合。示例代码如下:
<template>
  <div>
    <child-component />
  </div>
</template>
<script setup>
import ChildComponent from './ChildComponent.vue';
const childComponent = ref(null);
onMounted(() => {
  childComponent.value = ChildComponent;
});
reactive声明类型</script>
在上面的代码中,ChildComponent是子组件的名称,通过ref函数创建了一个响应式引用,并将其赋值给childComponent变量。然后,在模板中使用<child-component />标签来渲染子组件。
2. 使用<component>标签:Vue 3引入了新的<component>标签,它可以用于动态地渲染子组件。示例代码如下:
<template>
  <div>
    <component :is="dynamicComponent" />
  </div>
</template>
<script setup>
import ChildComponent1 from './ChildComponent1.vue';
import ChildComponent2 from './ChildComponent2.vue';
const dynamicComponent = reactive({ current: null });
onMounted(() => {
  dynamicComponent.current = ChildComponent1;
});
</script>
在上面的代码中,使用<component :is="dynamicComponent" />标签来动态渲染子组件。通过定义一个响应式对象dynamicComponent,并将当前子组件赋值给current属性,即可动态切换子组件的渲染。
3. 使用渲染函数:除了模板和组件的方式外,你还可以使用渲染函数来渲染子组件。示例代码如下:
<template>
  <div>
    <render-child-component />
  </div>
</template>
<script setup>
import { h } from 'vue';
import ChildComponent from './ChildComponent.vue';
const renderChildComponent = () => {
  return h('child-component', {}, []);
};
</script>
在上面的代码中,使用h函数创建了虚拟节点,并将其作为子组件进行渲染。这里的h函数是Vue 3提供的新的渲染函数,用于创建虚拟节点。在模板中通过<render-child-component />标签调用渲染函数来渲染子组件。