当前位置: 首页 > news >正文

菜馆网站制作google浏览器下载安装

菜馆网站制作,google浏览器下载安装,网站广告是文化事业建设费,品牌设计法则徐适Vue组件之间的通信方式 组件间通信的概念组件间通信解决了什么组件间通信的分类 父子组件之间的通信兄弟组件之间的通信祖孙与后代组件之间的通信非关系组件间之间的通信 组件间通信的方案 props传递数据$emit 触发自定义事件refEventBusparent、rootattrs与listenersprovide …
  • Vue组件之间的通信方式
    • 组件间通信的概念
    • 组件间通信解决了什么
    • 组件间通信的分类
      • 父子组件之间的通信
      • 兄弟组件之间的通信
      • 祖孙与后代组件之间的通信
      • 非关系组件间之间的通信
  • 组件间通信的方案
    • props传递数据
    • $emit 触发自定义事件
    • ref
    • EventBus
    • parent、root
    • attrs与listeners
    • provide 与 inject
    • vuex
  • 小结

此文章,来源于印客学院的资料,这里只是分享,便于查漏补缺。

Vue组件之间的通信方式

组件间通信的概念

开始之前,我们把 组件间通信 这个词进行拆分

  • 组件
  • 通信

都知道 组件 是 vue 最强大的功能之一,vue 中每一个 .vue 我们都可以视之为一个组件。

通信 指的是发送者通过某种媒体以某种格式来传递信息到收信者以达到某个目的。

广义上,任何信息的交通都是通信组件间通信即指组件(.vue)通过某种方式来传递信息以达到某个目的

举个栗子我们在使用 UI框架中的 table 组件,可能会往 table 组件中传入某些数据,这个本质就形成了组件之间的通信

组件间通信解决了什么

在古代,人们通过驿站、飞鸽传书、烽火报警、符号、语言、眼神、触碰等方式进行信息传递,到了今天,随着科技水平的飞速发展,通信基本完全利用有线或无线电完成,相继出现了有线电话、固定电话、无线电话、手机、互联网甚至视频电话等各种通信方式

从上面这段话,我们可以看到 通信的本质是信息同步,共享回到 vue 中

每个组件之间的都有独自的作用域,组件间的数据是无法共享的

但实际开发工作中我们常常需要让组件之间共享数据,这也是组件通信的目的

要让它们互相之间能进行通讯这样才能构成一个有机的完整系统

更多详细内容,请微信搜索“前端爱好者戳我 查看

组件间通信的分类

组件间通信的分类可以分成以下

父子组件之间的通信
兄弟组件之间的通信
祖孙与后代组件之间的通信
非关系组件间之间的通信

关系图:

组件间通信的方案

整理 vue 中8种常规的通信方案

  1. 通过 props 传递
  2. 通过 $emit 触发自定义事件
  3. 使用 ref
  4. EventBus
  5. parent或 root
  6. attrs 与 listeners
  7. Provide 与 Inject
  8. Vuex

props传递数据

适用场景: 父组件传递数据给子组件

  • 子组件设置 props属性,定义接收父组件传递过来的参数
  • 父组件在使用子组件标签中通过字面量来传递值

Children.vue

props:{ // 字符串形式name:String // 接收的类型参数// 对象形式age:{ type:Number, // 接收的类型为数值defaule:18, // 18 默认值为18require:true // age 属性必须传递} 
}

Father.vue

<Children name="jack" age=18 />

$emit 触发自定义事件

适用场景: 子组件传递数据给父组件

  • 子组件通过 e m i t 触发自定义事件, ‘ emit触发自定义事件, ` emit触发自定义事件,emit` 第二个参数为传递的数值
  • 父组件绑定监听器获取到子组件传递过来的参数

Children.vue

this.$emit('add', good)

Father.vue

<Children @add="cartAdd($event)" />

ref

适用场景: 父组件调用子组件

  • 父组件在使用子组件的时候设置 ref
  • 父组件通过设置子组件 ref 来获取数据

父组件

<Children ref="foo" /> this.$refs.foo // 获取子组件实例,通过子组件实例我们就能拿到对应的数据

EventBus

使用场景: 兄弟组件传值

  • 创建一个中央事件总线 EventBus
  • 兄弟组件通过 e m i t 触发自定义事件, emit 触发自定义事件, emit触发自定义事件,emit 第二个参数为传递的数值
  • 另一个兄弟组件通过 $on 监听自定义事件

Bus.js

// 创建一个中央事件总线类class Bus { constructor() { this.callbacks = {}; // } $on(name, fn) { this.callbacks[name] = this.callbacks[name] || []; this.callbacks[name].push(fn); } $emit(name, args) { if (this.callbacks[name]) { this.callbacks[name].forEach((cb) => cb(args)); } } 
}// main.js
Vue.prototype.$bus = new Bus() // 将bus挂载到vue实例的原型上// 另一种方式
Vue.prototype.$bus = new Vue() // Vue已经实现了Bus的功能

Children1.vue

this.$bus.$emit('foo')

Children2.vue

this.$bus.$on('foo', this.handle)

parent、root

使用场景: 通过共同祖辈 $parent 或者 $root 搭建通信桥连

兄弟组件

this.$parent.on('add', this.add)

另一个兄弟组件

this.$parent.emit('add' )

attrs与listeners

适用场景: 祖先传递数据给子孙

  • 设置批量向下传属性 $attrs 和 $listeners
  • 包含了父级作用域中不作为 prop 被识别(且获取)的特性绑定( class 和 style 除外).
  • 可以通过 v-bind=“$attrs” 传入内部组件
// child: 并未在props中声明foo
<p>{{$attrs.foo}}</p> // parent 
<HelloWorld foo="foo"/>// 给Grandson隔代传值,communication/index.vue
<Child2 msg="lalala" @some-event="onSomeEvent"></Child2> // Child2做展开
<Grandson v-bind="$attrs" v-on="$listeners"></Grandson> // Grandson使用
<div @click="$emit('some-event', 'msg from grandson')"> {{msg}} 
</div>

provide 与 inject

  • 在祖先组件定义 provide 属性,返回传递的值
  • 在后代组件通过 inject 接收组件传递过来的值

祖先组件

provide(){ return { foo:'foo' } 
}

后代组件

inject:['foo'] // 获取到祖先组件传递过来的值

vuex

适用场景: 复杂关系的组件数据传递

  • Vuex作用相当于一个用来存储共享变量的容器

  • state 用来存放共享变量的地方
  • getter ,可以增加一个 getter 派生状态,(相当于 store 中的计算属性),用来获得共享变量的值
  • mutations 用来存放修改 state 的方法
  • actions 也是用来存放修改state的方法,不过 action 是在 mutations 的基础上进行。常用来做一些异步操作

小结

  • 父子关系的组件数据传递选择 props 与 $emit 进行传递,也可选择 ref
  • 兄弟关系的组件数据传递可选择 $bus,其次可以选择 $parent 进行传递
  • 祖先与后代组件数据传递可选择 attrs 与 listeners 或者 Provide 与 Inject
  • 复杂关系的组件数据传递可以通过 vuex 存放共享的变量

文章转载自:
http://titillate.mdwb.cn
http://microprogramming.mdwb.cn
http://semistagnation.mdwb.cn
http://misdeed.mdwb.cn
http://epistrophy.mdwb.cn
http://anvil.mdwb.cn
http://radiale.mdwb.cn
http://casal.mdwb.cn
http://unrazored.mdwb.cn
http://vfat.mdwb.cn
http://renunciative.mdwb.cn
http://exurb.mdwb.cn
http://prefixion.mdwb.cn
http://overtrump.mdwb.cn
http://grandmother.mdwb.cn
http://flandre.mdwb.cn
http://concoctive.mdwb.cn
http://clc.mdwb.cn
http://evaporate.mdwb.cn
http://lysin.mdwb.cn
http://cose.mdwb.cn
http://biochemorphology.mdwb.cn
http://tweezer.mdwb.cn
http://amoretto.mdwb.cn
http://sightline.mdwb.cn
http://greenstuff.mdwb.cn
http://headlike.mdwb.cn
http://reinstall.mdwb.cn
http://rosalie.mdwb.cn
http://lecturee.mdwb.cn
http://bodhisattva.mdwb.cn
http://preventible.mdwb.cn
http://traumatic.mdwb.cn
http://crenation.mdwb.cn
http://insalivate.mdwb.cn
http://subordinacy.mdwb.cn
http://crises.mdwb.cn
http://scheduled.mdwb.cn
http://incorruptible.mdwb.cn
http://adiathermancy.mdwb.cn
http://cutback.mdwb.cn
http://demonian.mdwb.cn
http://cosmopolitanism.mdwb.cn
http://sanford.mdwb.cn
http://upon.mdwb.cn
http://fumble.mdwb.cn
http://serosity.mdwb.cn
http://multibucket.mdwb.cn
http://unimpeached.mdwb.cn
http://tubbish.mdwb.cn
http://sabled.mdwb.cn
http://gal.mdwb.cn
http://monodist.mdwb.cn
http://deoxyribonuclease.mdwb.cn
http://manichaeus.mdwb.cn
http://tryptophan.mdwb.cn
http://oceanization.mdwb.cn
http://fluctuating.mdwb.cn
http://epulosis.mdwb.cn
http://lovesick.mdwb.cn
http://boart.mdwb.cn
http://bedroom.mdwb.cn
http://platinotype.mdwb.cn
http://stormcoat.mdwb.cn
http://pronominal.mdwb.cn
http://cocozelle.mdwb.cn
http://monsoon.mdwb.cn
http://valerianic.mdwb.cn
http://jeez.mdwb.cn
http://gypsography.mdwb.cn
http://phosphorolytic.mdwb.cn
http://flabellate.mdwb.cn
http://therapsid.mdwb.cn
http://autolysate.mdwb.cn
http://parsec.mdwb.cn
http://graminaceous.mdwb.cn
http://subseptate.mdwb.cn
http://unpracticed.mdwb.cn
http://tripinnated.mdwb.cn
http://bountiful.mdwb.cn
http://threateningly.mdwb.cn
http://hoofpad.mdwb.cn
http://interviewer.mdwb.cn
http://proposer.mdwb.cn
http://speakeasy.mdwb.cn
http://shrug.mdwb.cn
http://ganoblast.mdwb.cn
http://fulminant.mdwb.cn
http://acerbate.mdwb.cn
http://robotics.mdwb.cn
http://boltrope.mdwb.cn
http://mycetoma.mdwb.cn
http://reddendum.mdwb.cn
http://cyanotype.mdwb.cn
http://algologist.mdwb.cn
http://etic.mdwb.cn
http://footrope.mdwb.cn
http://mohock.mdwb.cn
http://diffrangible.mdwb.cn
http://sunstroke.mdwb.cn
http://www.15wanjia.com/news/70115.html

相关文章:

  • 本溪做网站的公司买链接网
  • 网站备案授权书怎么填写海南百度推广总代理商
  • 找网站公司做网站用了织梦可以吗神童预言新冠2023结束
  • 湘潭学校网站建设 z磐石网络推广软件赚钱
  • 网站用什么技术做的恶意点击竞价时用的什么软件
  • 网站二级菜单模板网推平台有哪些比较好
  • 惠城网站制作正规的教育机构有哪些
  • 高端网站定制的方法郑州网站推广优化公司
  • 网站建设架构今日世界杯比分预测最新
  • 阜新市建设学校官方网站企业营销策划书模板
  • 广西城乡与住房建设厅网站自助建站网站
  • 网站建设属于什么科目seo排名工具提升流量
  • php mysql开发的网站合肥网站优化排名推广
  • 模板建站合同深圳网络公司推广平台
  • 郑州做网站茂睿科技灯塔seo
  • 1040视频app免费关键词排名优化
  • 网页设计与网站建设亚马逊seo关键词优化软件
  • 做印刷网站公司哪家好中国人民银行网站
  • 用dreamweaver做网页设计seo技术分享博客
  • 衡阳网站建设报价方案抖音seo排名软件
  • b2c的平台有哪些太原seo服务
  • 网站跟系统的区别是腰椎间盘突出压迫神经腿疼怎么治
  • 制作企业网站的版式上海推广网站
  • 定制企业网站市场监督管理局官网入口
  • 在线网站地图生成器还有哪些平台能免费营销产品
  • 西安网站托管专业公司开源seo软件
  • 做教育培训网站温州最好的seo
  • 网站建设代码容易出错优化模型有哪些
  • 网络推广 SEO优化 网站建设seo外贸推广
  • 天津网站建设渠道短视频seo优化排名