在 vue3 中,我们可以使用点语法来使用挂载在一个对象上的组件。

    1. // components/Form/index.js
    2. import Form from './Form.vue'
    3. import Input from './Input.vue'
    4. import Label from './Label.vue'
    5. // 把Input、Label组件挂载到 Form 组件上
    6. Form.Input = Input
    7. Form.Label = Label
    8. export default Form
    1. // 使用:
    2. <script setup lang="ts">
    3. import Form from './components/Form'
    4. </script>
    5. <template>
    6. <Form>
    7. <Form.Label />
    8. <Form.Input />
    9. </Form>
    10. </template>

    命名空间组件在另外一种场景中的使用,从单个文件中导入多个组件时:

    1. // FormComponents/index.js
    2. import Input from './Input.vue'
    3. import Label from './Label.vue'
    4. export default {
    5. Input,
    6. Label,
    7. }
    1. // 使用
    2. <script setup>
    3. import * as Form from './FormComponents'
    4. </script>
    5. <template>
    6. <Form.Input>
    7. <Form.Label>label</Form.Label>
    8. </Form.Input>
    9. </template>