百科狗-知识改变命运!
--

内置特殊元素 ​

乐乐2年前 (2023-11-21)阅读数 27#技术干货
文章标签插槽

内置特殊元素 ​

内置特殊元素 ​

不是组件

具有类似组件的特性,也是模板语法的一部分。但它们并非真正的组件,同时在模板编译期间会被编译掉。因此,它们通常在模板中用小写字母书写。

` {#component}"">​

一个用于渲染动态组件或元素的“元组件”。

  • Props

    ts
    interface DynamicComponentProps {
      is: string | Component
    }
  • 详细信息

    要渲染的实际组件由isprop 决定。

    • is是字符串,它既可以是 HTML 标签名也可以是组件的注册名。

    • 或者,is也可以直接绑定到组件的定义。

  • 示例

    按注册名渲染组件 (选项式 API):

    vue
    
    import Foo from './Foo.vue'
    import Bar from './Bar.vue'
    
    export default {
      components: { Foo, Bar },
      data() {
        return {
          view: 'Foo'
        }
      }
    }
    
    
    
      
    

    按定义渲染组件 (组合式 API):

    vue
    
    import Foo from './Foo.vue'
    import Bar from './Bar.vue'
    
    
    
      
    

    渲染 HTML 元素:

    template

    内置组件都可以传递给is,但是如果想通过名称传递则必须先对其进行注册。举例来说:

    vue
    
    import { Transition, TransitionGroup } from 'vue'
    
    export default {
      components: {
        Transition,
        TransitionGroup
      }
    }
    
    
    
      
        ...
      
    

    如果将组件本身传递给is而不是其名称,则不需要注册,例如在中。

    如果在标签上使用v-model,模板编译器会将其扩展为modelValueprop 和update:modelValue事件监听器,就像对任何其他组件一样。但是,这与原生 HTML 元素不兼容,例如。因此,在动态创建的原生元素上使用v-model将不起作用:

    vue
    
    import { ref } from 'vue'
    
    const tag = ref('input')
    const username = ref('')
    
    
    
      
      
    

    在实践中,这种极端情况并不常见,因为原生表单字段通常包裹在实际应用的组件中。如果确实需要直接使用原生元素,那么你可以手动将v-model拆分为 attribute 和事件。

  • 参考动态组件

` {#slot}"">​

表示模板中的插槽内容出口。

  • Props

    ts
    interface SlotProps {
      /**
       * 任何传递给  的 prop 都可以作为作用域插槽
       * 的参数传递
       */
      [key: string]: any
      /**
       * 保留,用于指定插槽名。
       */
      name?: string
    }
  • 详细信息

    元素可以使用nameattribute 来指定插槽名。当没有指定name时,将会渲染默认插槽。传递给插槽元素的附加 attributes 将作为插槽 props,传递给父级中定义的作用域插槽。

    元素本身将被其所匹配的插槽内容替换。

    Vue 模板里的元素会被编译到 JavaScript,因此不要与原生元素进行混淆。

  • 参考组件 - 插槽

` {#template}"">​

当我们想要使用内置指令而不在 DOM 中渲染元素时,标签可以作为占位符使用。

  • 详细信息

    的特殊处理只有在它与以下任一指令一起使用时才会被触发:

    • v-ifv-else-ifv-else
    • v-for
    • v-slot

    如果这些指令都不存在,那么它将被渲染成一个原生的元素。

    带有v-for也可以有一个key属性。所有其他的属性和指令都将被丢弃,因为没有相应的元素,它们就没有意义。

    单文件组件使用顶层的标签来包裹整个模板。这种用法与上面描述的使用方式是有区别的。该顶层标签不是模板本身的一部分,不支持指令等模板语法。

  • 参考

    • 指南 -上的v-if
    • 指南 -上的v-for
    • 指南 - 具名插槽

鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com

免责声明:我们致力于保护作者版权,注重分享,当前被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!邮箱:344225443@qq.com)

图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,本着为中国教育事业出一份力,发布内容不收取任何费用也不接任何广告!)
最新文章