目录$attrs和$listeners如何使用呢?$attrs的使用:$listeners的使用:总结:在开发的过程中遇到这么个场景,我需要在爷组件中请求数据,请求到的数据呢需要在孙
在开发的过程中遇到这么个场景,我需要在爷组件中请求数据,请求到的数据呢需要在孙组件中使用。
爷孙组件是这样的:我有一个根组件index.Vue,根组件中有一个父亲组件<Father/>,在父亲组件中又有一个子组件,我们叫他孙组件<Son/>
看到这个场景,vuex、eventBus是有些大材小用了,然后我就用了props,将数据传递给<Father/>,又将这个值通过props传给<Son/>。但是这么传递似乎又感觉有些low了,那有没有更好的办法呢?确实有!那就是$attrs和$listeners。
(需要注意的是父组件中不需要接收props,只要在孙组件中接收就可以。)
然后上代码:
//index.vue:
<Father :homeInfo="homeInfo"/>
//Father.vue:
<Son v-bind="$attrs"/>
//son.vue:
<template>
<div class="home">
{{homeInfo.name}}
</div>
</template>
<script>
export default {
name: "Son",
data() {
return {};
},
props: {
homeInfo: {
default: Object,
default: () => {},
},
},
};
</script>
然后上代码:
//index.vue:
<Father :homeInfo="homeInfo" @update="update"/>
//Father.vue:
<Son v-bind="$attrs" v-on="$listeners"/>
//son.vue:
<template>
<div class="home" @click="update">
{{homeInfo.name}}
</div>
</template>
<script>
export default {
name: "Son",
data() {
return {};
},
props: {
homeInfo: {
default: Object,
default: () => {},
},
},
methods: {
update() {
const newHome = {
name: 'new'
}
this.$emit("update", newHome)
}
}
};
</script>
其实$attrs和$listeners相当于是一个中转,主要用在父亲组件上。爷组件和孙组件保持以前的使用即可!
到此这篇关于VUE中如何优雅实现爷孙组件数据通信的文章就介绍到这了,更多相关VUE爷孙组件数据通信内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
--结束END--
本文标题: VUE中如何优雅实现爷孙组件的数据通信
本文链接: https://www.lsjlt.com/news/146319.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-01-12
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0