多级组件嵌套需要传递数据时,通常使用的方法是通过vuex。如果仅仅是传递数据,而不做中间处理,使用 vuex 处理,未免有点杀鸡用牛刀。Vue 2.4 版本提供了另一种方法,使用 v-bind=”$attrs”, 将父组件中不被认为 props特性绑定的属性传入子组件中,通常配合 interitAttrs 选项一起使用。之所以要提到这两个属性,是因为两者的出现使得组件之间跨组件的通信在不依赖 vuex 和事件总线的情况下变得简洁,业务清晰。
创新互联主营三门峡网站建设的网络公司,主营网站建设方案,手机APP定制开发,三门峡h5重庆小程序开发搭建,三门峡网站营销推广欢迎三门峡等地区企业咨询首先分析以下应用场景:
如上图所示,A、B、C三个组件依次嵌套,按照 Vue 的开发习惯,父子组件通信可以通过以下方式实现:
往往数据在不需要全局的情况而仅仅是父子组件通信时,使用第一种方式即可满足。
如上图,A 组件与 C 组件之间属于跨多级的组件嵌套关系,以往两者之间如需实现通信,往往通过以下方式实现:
很显然,第一种通过props和$emit的方式,使得组件之间的业务逻辑臃肿不堪,B组件在其中仅仅充当的是一个中转站的作用。如使用第二种 Vuex的方式,某些情况下似乎又有点大材小用的意味,(仅仅是想实现组件之间的一个数据传递,并非数据共享的概念)。第三种情况的使用在实际的项目操作中发现,如不能实现很好的事件监听与发布的管理,往往容易导致数据流的混乱,在多人协作的项目中,不利于项目的维护。
$attrs以及$listeners的出现解决的就是第一种情况的问题,B 组件在其中传递props以及事件的过程中,不必在写多余的代码,仅仅是将$attrs以及$listeners向上或者向下传递即可。
如下所示:
<template> <div id="app"> <child1 :p-child1="child1" :p-child2="child2" v-on:test1="onTest1" //此处监听了两个事件,可以在B组件或者C组件中直接触发 v-on:test2="onTest2"> </child1> </div> </template> <script> import Child1 from './Child1.vue'; export default { data () { return {}; }, components: { Child1 }, methods: { onTest1 () { console.log('test1 running...'); }, onTest2 () { console.log('test2 running'); } } }; </script>
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
本文题目:Vuev2.4中新增的$attrs及$listeners属性使用教程-创新互联
URL链接:https://www.cdcxhl.com/article4/cddeie.html
成都网站建设公司_创新互联,为您提供网站制作、服务器托管、全网营销推广、关键词优化、商城网站、动态网站
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联