vue|vue组件使用$listeners和$attrs隔代传参
1.传递属性$attrs
【vue|vue组件使用$listeners和$attrs隔代传参】说明:a t t r s 只 代 表 的 是 那 些 没 有 被 声 明 为 p r o p s 的 属 性 , 如 果 某 个 p r o p 被 子 组 件 中 声 明 了 ( 就 是 这 个 属 性 已 经 在 子 组 件 的 p r o p s 中 了 ) , 在 子 组 件 中 的 attrs只代表的是那些没有被声明为props的属性, 如果某个prop被子组件中声明了(就是这个属性已经在子组件的props中了), 在子组件中的 attrs只代表的是那些没有被声明为props的属性,如果某个prop被子组件中声明了(就是这个属性已经在子组件的props中了),在子组件中的attrs就会把声明的prop剔除。
2.传递方法
l i s t e n e r s 包 含 了 父 作 用 域 中 的 ( 不 含 . n a t i v e 修 饰 器 的 ) v ? o n 事 件 监 听 器 。 它 可 以 通 过 v ? o n = " listeners包含了父作用域中的 (不含 .native 修饰器的) v-on 事件监听器。 它可以通过 v-on=" listeners包含了父作用域中的(不含.native修饰器的)v?on事件监听器。它可以通过v?on="listeners" 传入内部组件——在创建更高层次的组件时非常有用。
三个组件:分别是:
parent.vue
son.vue
grandson.vue// 父组件
父组件
:name="name"@change='change'>
>
import Son from './son.vue'
export default {data(){return{name:"周冬雨"
}
},
components:{Son
},
methods: {change(){this.name = "马冬梅";
}
},
}//儿子组件
儿子组件
//通过v-bin进行传递
>
import GrandSon from './grandson'
export default {components:{GrandSon
}
}
//孙子组件
孙子组件
姓名:{
{
$attrs.name}}
>
export default { methods: {handleClick(){this.$listeners.change();
}
},
}
页面显示:
1.最终在孙子组件中获取到了他爷爷的值
文章图片
2.通过$listeners孙子组件也可以获取到他爷爷的方法。点击按钮效果如下,直接调用了爷爷的change方法,修改了name的值。
文章图片
推荐阅读
- 由浅入深理解AOP
- vue-cli|vue-cli 3.x vue.config.js 配置
- 【译】20个更有效地使用谷歌搜索的技巧
- 2020-04-07vue中Axios的封装和API接口的管理
- mybatisplus如何在xml的连表查询中使用queryWrapper
- MybatisPlus|MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决
- MybatisPlus使用queryWrapper如何实现复杂查询
- iOS中的Block
- Linux下面如何查看tomcat已经使用多少线程
- 使用composer自动加载类文件