美文网首页
vm.$attts的用法

vm.$attts的用法

作者: _undefined | 来源:发表于2019-05-07 10:56 被阅读0次

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属性还是不要省略的好。

相关文章

  • vm.$attts的用法

    1、父组件向子组件传值,子组件没有在props中声明时的属性存在$attrs对象中。 2、在多层组件引用时,被引用...

  • vue中$emit和$on的使用

    1. vm.$on(event,callback) 用法:监听当前实例上的自定义事件。事件可以由vm.$emit触...

  • 2019-04-24

    html HTML 标签 css flex vue vm.$emit用法 $emit 绑定一...

  • Vue2.X

    开发中的知识巩固 vm.$nextTick( [callback] )的用法简单来说就是数据更新完毕再来调用DOM...

  • 实例属性

    实例属性 vm.$data vm.$props vm.$el vm.$options vm.$parent vm....

  • 实例方法

    实例方法 / 数据 vm.$watch vm.$set vm.$delete 实例方法 / 事件 vm.$on v...

  • Vue基础(四)--Vue实例的属性和方法

    Vue实例的属性和方法 1.属性 vm.$el vm.$data vm.$options vm.$refs... ...

  • 【一起读】深入浅出Vue.js——变化侦测相关的API实现原理

    4.1 vm.$watch 用法: 用于观察一个表达式或者computed函数在Vue.js实例上的变化。回调函数...

  • Vue实例简单方法

    vm.$el就是元素 vm.$data数据对象data vm.$mount() 手动挂载vue程序 2、循环: ...

  • 实例属性

    vm.$data 实例对象data属性 vm.$props 实例对象props属性 vm.$el 实例对象根DOM...

网友评论

      本文标题:vm.$attts的用法

      本文链接:https://www.haomeiwen.com/subject/uinsoqtx.html