关于vue的插槽

        插槽的功能是什么?

插槽的指令为v-slot,它目前取代了slot和slot-scope

允许子组件在父组件中使用时,通过标签嵌套(HTML结构)内容,在子组件内部通过插槽接收传入的内容。

一、基础插槽

1、子组件中定义slot接收父组件传入内容

const Child = {
      template: `
        <div>
          <slot></slot>
          <h3>子组件头部</h3>  
         
          <h3>子组件尾部</h3>
        </div>
      `
    }

2、父组件中 子组件使用 双标签 通过嵌套 传入的内容

  const Home = {
      template: `
        <div>
          <h2>父组件</h2>
          <child>
      // 嵌入的子组件的内容
            <div>
              <button>按钮</button>  
            </div>  
          </child>
          <hr/>
          <child>
            <div>
              <mark>按钮</mark>  
            </div>   
          </child>
        </div>
      `,
      components: {
        Child
      }
    }

 二、具名插槽:定义多个插槽,并定义名字,来接收父组件中传入的多个  代码块

 1、子组件中 定义 定义多个slot并 起名字 name属性

 const Child = {
      template: `
        <div>
          <slot name="a"></slot>
          <h3>子组件body</h3>  
          <slot name="b"></slot>
        </div>
      `
    }

2、父组件中 子组件使用 双标签 通过嵌套 传入 多个 结构块 并 指定每个代码块 传入的slot

const Home = {
      template: `
        <div>
          <h2>父组件</h2>
          <child>
            <div slot="b">
              <mark>按钮</mark>  
            </div> 
            <div slot="a">
              <button>按钮</button>  
            </div>  
            
          </child>
    
        </div>
      `,
    }

 三、作用域插槽

        使用场景:slot 传入的 结构块 定义在 父组件中,但是渲染是在子组件中渲染,传入结构块只能使用父组件data中的数据,实际场景经常需要使用子组件中的数据

 1、子组件中 通过 slot 的自定义属性挂载 数据

 const Child = {
      template: `
        <div>
          <slot :msg="msg" :arr="arr" c="1111"></slot>
          <h3>子组件头部</h3>  
          <h3>子组件尾部</h3>
        </div>
      `,
      data(){
        return {
          msg: '子组件数据',
          arr: ['a', 'b', 'c', 'd']
        }
      }
    }

2、父组件中 给传入 结构块根元素  定义 slot-scope属性来接收 slot 自定义属性挂载的数据


 const Home = {
      template: `
        <div>
          <h2>父组件</h2>
          <child>
              <div slot-scope="data">
                 <span>{{data.msg}}</span>
              </div>
           </child>
        </div>
      `,
      data(){
        return {
          msg: '子组件数据',
        }
      }
    }

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值