vm.$attts的用法

1、父组件向子组件传值,子组件没有在props中声明时的属性存在$attrs对象中。

// 父组件
<template>
    <div>
        ParentPage
        <Child msg="hello child page" />
    </div>
</template>

<script>
    import Child from './Child'
    export default {
        name: 'ParentPage',
        components: {
            Child
        }
    }
</script>
// 子组件
<template>
    <div>
        ChildPage:{{$attrs.msg}}
    </div>
</template>

<script>
    export default {
        name: 'ChildPage',
        //   props: {
        //     msg: {
        //       type: String
        //     }
        //   }
    }
</script>

2、在多层组件引用时,被引用组件又存在多个props属性,向下传递要在子子组件重复的写props属性,繁复又冗长。可用在子组件使用v-bind="$attrs",子子组件就可以在$attrs中获取相应的属性。

// 父组件
<template>
    <div>
        ParentPage
        <Child msg="hello {0} page" />
    </div>
</template>

<script>
    import Child from './Child'
    export default {
        name: 'ParentPage',

        components: {
            Child
        }
    }
</script>

<style>
</style>
// 子组件
<template>
    <div>
        ChildPage:{{$attrs.msg.replace(/\{0\}/, 'Child')}}
        <SubChild
            v-bind="$attrs" />
    </div>
</template>

<script>
    import SubChild from './SubChild.vue'
    export default {
        name: 'ChildPage',
        //   props: {
        //     msg: {
        //       type: String
        //     }
        //   },
        components: {
            SubChild
        },
        data () {
            return {}
        }
    }
</script>
// 子子组件
<template>
    <div>
        SubChildPage:{{$attrs.msg.replace(/\{0\}/, 'SubChild')}}
    </div>
</template>

<script>
    export default {
        name: 'SubChildPage',
        //   props: {
        //     msg: {
        //       type: String
        //     }
        //   },
        data () {
            return {}
        }
    }
</script>

$attrs虽然好用,但不能滥用,以免造成props属性定义不清晰。可以用于多层组件中间部分组件传值。在必须的props属性还是不要省略的好。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 这篇笔记主要包含 Vue 2 不同于 Vue 1 或者特有的内容,还有我对于 Vue 1.0 印象不深的内容。关于...
    云之外阅读 5,189评论 0 29
  • vue概述 在官方文档中,有一句话对Vue的定位说的很明确:Vue.js 的核心是一个允许采用简洁的模板语法来声明...
    li4065阅读 7,628评论 0 25
  • Vue组件的通信方式大致有这11(12)种 常用的Props $attrs & $listeners provid...
    zpkzpk阅读 1,138评论 0 3
  • 作为一个合格的开发者,不要只满足于编写了可以运行的代码。而要了解代码背后的工作原理;不要只满足于自己的程序...
    六个周阅读 8,689评论 1 33
  • VUE介绍 Vue的特点构建用户界面,只关注View层简单易学,简洁、轻量、快速渐进式框架 框架VS库库,是一封装...
    多多酱_DuoDuo_阅读 2,862评论 1 17

友情链接更多精彩内容