vue 2父组件向子组件方向的数据、方法单向$attrs/$listeners的用法-个人笔记

名称用法
$attrs向子组件传递数据(传递的数据 - props中的数据)
$listeners向子组件传递方法
共同点只读
  • 父组件
<template>
    <div>
        parent:
        <son :clearable="clearableValue" @clickEvent = clickEvent :sex = "sex" :name="name"  @click="clickEvent"/>
    </div>
</template>

<script>
export default {
    name: 'parent',
    inheritAttrs: false,
    props: {
        msg: String
    },
    data() {
        return {
            clearableValue: '111',
            sex: 'nv',
            name: 'yuhang',
        };
    },
    components: {
        son: () => import(/* webpackChunkName: 'son' */ './son.vue'),
    },
    created() {
        console.log(this.$attrs);
        console.log('listeners', this.$listeners);
    },
    methods: {
        clickEvent() {
            console.log('hjdojdoa');
        },
    },
}
</script>
  • 子组件
<template>
    <div>
        son:
        <sunzi v-bind="$attrs" language='english' v-on="$listeners"></sunzi>
    </div>
</template>

<script>
export default {
    name: 'son',
    inheritAttrs: false,
    props: {
        clearable: String
    },
    components: {
        sunzi: () => import(/* webpackChunkName: 'sunzi' */ './sunzi.vue'),
    },
    created() {
        console.log(this.$attrs);
        console.log('listeners', this.$listeners);
    },
}
</script>
  • 子组件
<template>
    <div>
        sunzi:
    </div>
</template>

<script>
export default {
    name: 'sunzi',
    
    created() {
        console.log('sun----------------', this.$attrs);
        console.log('listeners', this.$listeners);
    },
}
</script>

注意事项

  • inheritAttrs: false, 属性默认为true,不设为false的话,为在dom节点上显示传递的内容
  • 父组件向 孙组件(多级嵌套组件-跨级组件)传递 时,保证传递链上v-bind="$attrs" v-on="$listeners" 的存在
    在这里插入图片描述

在这里插入图片描述
以上父子孙组件的打印为:

在这里插入图片描述
可见:信息来源者(父组件)是没有 a t t r s 信 息 和 attrs信息和 attrslisteners信息的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值