作用域插槽

文章详细讲解了Vue组件中v-slot的使用,包括默认插槽(default)和具名插槽(name),以及如何通过slot从子组件向父组件传递数据,例如使用`:slot`和`:data`属性。示例展示了在子组件定义插槽并传递数据,以及父组件如何接收并使用这些数据来渲染内容。
摘要由CSDN通过智能技术生成

AboutChild.vue

<template>

  <div>

    <div class="for">

      <h3 v-for="(item, index) in column" :key="index">

        <slot :item="item"></slot>

      </h3>

    </div>

  </div>

</template>

 

AbouView.vue

<template>

  <div>

    <AboutChild

      v-for="item in columns"

      :key="item.name"

      :column="item.childrenList"

    >

      <template #default="AAA">

        <List :ListData="AAA.item" />

      </template>

    </AboutChild>

  </div>

</template>

 这里的.item 就是<slot :item="item">里面设置的:item

把子组件的数据传递给父组件

 v-slot:default="AAA" -----> #default="AAA"(element-plus中用了大量的这种缩写)

为啥v-slot后面跟的是 default呢? ====> 因为slot如果没有name属性的话, v-slot:default 匹配这些没有命名的slot;  有名字的话要 v-slot:名字 ="AAA" 来匹配

也就是说我如果 是 <slot name="yazhou" :item="item"> </slot>  那我就要写  v-slot:yazhou="AAA"

                        核心传给父组件的数据 是一个对象 然后{ 自定义的: 传递的内容}

<slot name="nigger" :bg="god.name"></slot>

自定义的名字是nigger  传递的是属性值和属性值 也就是 {bg:"god.name"}

例子

在son子组件中 

<template>

    <div>

         <div>

            <h1>儿子组件标题</h1>

            <span>

                <slot  :name="colums.slot" :rows="persons" :bg="god"></slot>

            </span>

            <div class="box">

                <slot name="nigger" :bg="god.name"></slot>

            </div>

         </div>

    </div>

</template>

<script>

    export default {

        data() {

            return {

                colums:{

                    slot:'axft'

                },

                god:{

                    name:'小李'

                },

                persons: [

                    {

                    name:'小王',

                    age:13,

                    sex:''

                },

                   {

                    name:'小红',

                    age:21,

                    sex:''

                },

                   {

                    name:'小刚',

                    age:33,

                    sex:'人妖'

                },

                ]

            }

        },

    }

</script>

在父组件中使用子组件son组件

#axft代表的是我在子组件中自定的插槽的name值

<template>

    <div>

<son>

    <template #axft="scopeProps">

        scopeProps就是子组件传递过来的数据 可以随便命名

          <br>

     {{scopeProps}}

     <br>

     这里的rows就相当于与是子组件传过来的person (:rows="persons")

     <br>

     {{scopeProps.rows}}

      <br>

    </template>

    <template  #nigger="{bg}">

        这里的模板中的bg值 是一个结构

        <br>

         scoped就是子组件传来的数据

         <br>

        scoped = {bg'小李'}

        <br>

        相当于 let {bg} = scoped

      {{bg}}

    </template>

</son>

    </div>

</template>

最后的页面展示

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你的梦中boy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值