vue基础扩展8–solt详解「终于解决」

vue基础扩展8–solt详解「终于解决」<scriptsrc=”https://cdn.jsdelivr.net/npm/vue/dist/vue.js”></script><title>vue基础扩展8–solt详解</title></head><body><!—一、旧的插槽概述:插槽是什么?顾明思意就是,在组件内定义了一个占位符,可以用来拿到组件包裹的内容进行渲染。或者说我们在使用组件时,在组件内.

大家好,欢迎来到IT知识分享网。

<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
  <title>vue基础扩展8--solt详解</title>
</head>
<body>
    <!---
      一、旧的插槽
      概述:插槽是什么? 顾明思意就是,在组件内定义了一个占位符,可以用来拿到组件包裹的内容进行渲染。
    或者说我们在使用组件时,在组件内填写的元素会在组件内部定义的solt标记渲染。
      1、旧的api
        方式1: 组件内<solt></solt>, 使用:组件标签包裹内容即solt内容。
        方式2:  组件内<solt name="xx"><solt>, 使用:包裹内容内: <element solt="xx"> <element>
        方式3: 组件内<solt :todo="todo">,使用:在方式2基础上通过<template slot-scope="scope"> scope.todo 传递绑定的属性
    -->

    <!--2、旧的api综合使用案例-->
    <div id="app">
      <slot2 :msg="msg">
        <div slot="head">我是头</div>
        <div slot-scope="scope">我是默认:{
  
  {scope.msg}}</div>
        <div slot="foot">我是尾</div>
      </slot2>
    </div>
      
    <script>
      var vm = new Vue({
        el:'#app',
        data() {
          return {
            msg:'hello world!'
          }
        },
        components:{
          slot2:{
            props: ['msg'],
            template:`<div>
              <slot name="head"></slot>
              <slot :msg="msg"></slot>
              <slot name="foot"></slot>
            </div>`
          }
        }
      });
    </script>

    <!--
      3、 新的api方式
      组件内模板定义solt的方式不变, solt变成v-solt
      方式2 :<element v-solt:xx> </element>  或者 <element #xx> </element>
      方式3 :<element v-solt="slotProps"> </element>  或者 <element #default="slotProps"> </element>
    -->

    <!--
      4、改写范例
    -->

    <div id="app1">
      <slot2 :msg="msg">
        <template #head><div>我是头</div></template>
        <template #default="scope"><div>我是默认:{
  
  {scope.msg}}</div></template>
        <template #foot><div>我是尾</div></template>
      </slot2>
    </div>
      
    <script>
      var vm = new Vue({
        el:'#app1',
        data() {
          return {
            msg:'hello world!'
          }
        },
        components:{
          slot2:{
            props: ['msg'],
            template:`<div>
              <slot name="head"></slot>
              <slot :msg="msg"></slot>
              <slot name="foot"></slot>
            </div>`
          }
        }
      });
    </script>

 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/26514.html

(0)
上一篇 2023-04-30 15:00
下一篇 2023-05-07 19:00

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信