前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >vue-组件通讯

vue-组件通讯

作者头像
刘嘿哈
发布2022-10-25 13:57:17
3080
发布2022-10-25 13:57:17
举报
文章被收录于专栏:js笔记js笔记

组件化

vue组件系统提供了⼀种抽象,让我们可以使⽤独⽴可复⽤的组件来构建⼤型应⽤,任意类型的应⽤界 ⾯都可以抽象为⼀个组件树。组件化能提⾼开发效率,⽅便重复使⽤,简化调试步骤,提升项⽬可维护 性,便于多⼈协同开发

组件通信常⽤⽅式

props event vuex

⾃定义事件

边界情况 $parent $children $root $refs provide/inject

⾮prop特性

$attrs $listeners

get新技能获取并绑定到当前组件所有特性和事件

v-bind="$attrs" v-on="$listeners" provide/inject

公交总线

Bus类简单实现

兄弟组件传值$parent和$root通讯

大儿子created里面给parent绑定事件

created() {

this.$parent.$on('parentEvent',(data)=>{

console.log(data);

})

},

二儿子里面触发父组件的事件

<button @click="$parent.$emit('parentEvent',msg)">二儿子</button>

$children(子组件排序是随机的,慎用)

⽗组件可以通过$children访问⼦组件实现⽗⼦通信

// parent 

this.$children[0].xx = 'xxx

$attrs/$listeners

包含了⽗作⽤域中不作为 prop 被识别 (且获取) 的特性绑定 (class 和 style 除外)。当⼀个组件没有 声明任何 prop 时,这⾥会包含所有⽗作⽤域的绑定 (class 和 style 除外),并且可以通过 vbind="$attrs" 传⼊内部组件——在创建⾼级别的组件时⾮常有⽤。

// child:并未在props中声明foo

 <p>{{$attrs.foo}}</p>

// parent 

<HelloWorld foo="foo"/>

refs

获取⼦节点引⽤

// parent <HelloWorld ref="hw"/>

mounted() {  

this.$refs.hw.xx = 'xxx'

 }

provide/inject

能够实现祖先和后代之间传值

// ancestor 

provide() {

 return {foo: 'foo'}

 }

// descendant

 inject: ['foo']

插槽

插槽语法是Vue 实现的内容分发 API,⽤于复合组件开发。该技术在通⽤组件库开发中有⼤量应⽤。

匿名插槽

// comp1 

<div> <slot></slot> </div>

// parent

 <comp>hello</comp>

具名插槽

将内容分发到⼦组件指定位置

// comp2

 <div> <slot></slot> <slot name="content"></slot> </div>

// parent <Comp2>  

  <!-- 默认插槽⽤default做参数 --> 

   <template v-slot:default>具名插槽</template>

    <!-- 具名插槽⽤插槽名做参数 -->   

 <template v-slot:content>内容...</template> </Comp2>

作⽤域插槽

分发内容要⽤到⼦组件中的数据

// comp3 

<div> <slot :foo="foo"></slot> </div>

// parent

 <Comp3> 

   <!-- 把v-slot的值指定为作⽤域上下⽂对象 -->

    <template v-slot:default="slotProps">  

  来⾃⼦组件数据:{{slotProps.foo}}  

  </template> 

</Comp3>

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-08-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 组件化
    • 组件通信常⽤⽅式
      • 兄弟组件传值$parent和$root通讯
        • $children(子组件排序是随机的,慎用)
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档