vue 组件之scope 属性,组件如何给插槽传数据

一个组件如何给当做插槽的组件传参?平时我们使用查槽都是这么用的。插槽的直接接受页面的数据。常规用法

<template>
    <div>
        <father-compoent>
      <!--指定将子组件放到父组件中的name=list的slot标签的位置-->
            <child-component slot="list" :data="arr"></child-component>
        </father-compoent>
    </div>
</template>
<script>
export default {
    data(){
        arr:[1,2,3,4]
    },
}
</script>

那么问题来了目前有个需求是需要在页面传入一个数据,在父组件中对数据做一些处理然后再传给子组件中去遍历,怎么做呢?说白了困难点就是在组件中给组件内的插槽传数据。这下就需要用的scope这个属性了
父组件如下

<template>
    <div>
        <father-compoent>
        <!--注意:list字段随意写,但是要和外层使用时一致-->
           <slot name="list" :list="arr"><slot>
        </father-compoent>
    </div>
</template>
<script>
export default {
    data(){
        arr:[1,2,3,4]
    },
    
}
</script>

重点来了

<template>
    <div>
        <father-compoent>
        <!--这里需要用一个templat标签来定义从父组件来接受的参数的名称-->
            <template slot="list" scope="scope">
            <!--注意,scope.xxx这个字段要和父组件内传的字段一致-->
                        <child-component  :data="scope.list" :data2="arr"></child-component>
            </template>
        </father-compoent>
    </div>
</template>
<script>
export default {
    data(){
        arr:[1,2,3,4]
    },
    
}
</script>

子组件中的scope.list就是父组件传过来的数据,而arr就是页面中的数据
就这样通过scope属性来搭桥,插槽位置的组件就可以拿到父组件的数据了,同时子组件同样也可以接受页面上的数据arr,这样大功告成

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • vue概述 在官方文档中,有一句话对Vue的定位说的很明确:Vue.js 的核心是一个允许采用简洁的模板语法来声明...
    li4065阅读 7,295评论 0 25
  • 组件(Component)是Vue.js最核心的功能,也是整个架构设计最精彩的地方,当然也是最难掌握的。...
    六个周阅读 5,664评论 0 32
  • 什么是组件? 组件 (Component) 是 Vue.js 最强大的功能之一。组件可以扩展 HTML 元素,封装...
    youins阅读 9,572评论 0 13
  • VUE介绍 Vue的特点构建用户界面,只关注View层简单易学,简洁、轻量、快速渐进式框架 框架VS库库,是一封装...
    多多酱_DuoDuo_阅读 2,787评论 1 17
  • 回想这一天都做了什么,好像没有什么有价值,有意义的事情。时间成本啊,珍惜时间。
    文华ya阅读 325评论 0 0