我们都知道,Vue作为一个低级别的低阈值进入前端 - 端框架,是组件的核心开发。VUE由多个组件形成,组件是其本质和强度。其他,这意味着不同组件之间的数据不能相互共享。
但是,在实际项目开发中,我们通常需要其他组件的数据,为此,我们存在组件通信的问题。先前组件之间的关系:父亲和儿子,兄弟和儿子,兄弟和的不同选择的数据传输方法后代也不同。让我们今天做出摘要。
父组件到子组件值
在父组件中介绍子组件并绑定afterdata自定义属性
使用道具接收子组件中父组件传递的数据。
由于具有VUE机制,子类无法直接修改父组件传输的值,否则,如果可以更改,父组件的值将“污染”。
但是,如果要修改子组件中父组件的值父亲数据的数据。
传递到父组件传递值
使用方案:此时,当一般组件更改内部数据时,请告知父部分数据。
兄弟的先前价值
在子组件B中接收变量和绑定触发事件B
当父组件接收组件B的更改名称事件时,它将执行EditName事件并修改名称的数据。使用响应机制,父组件将将最新名称价值传递给组件A。组件A渲染最新名称价值
直到今天,组件B的更改已传达数据以通过父组件A将数据完成到组件A
此文件是在需要组件通信的组件中引入的
在bus.js文件中还引入了另一个组件,以通过$ on Monitor Event回电
通过引入BUS.JS文件,EventBus获得了VUE实例,实际上与以前的方式相同。
直接访问组件实例
从这个数字可以看出。$ parent可以获取父组件的方法,数据的数据等,并且可以直接使用和执行。
如您所见,父组件在登录()生命周期中获得了子 - 组件实例,并且获得的实例是一个数组表单
因此,您可以获得一个组件实例,并调用组件方法和数据
这样,父组件可以直接使用“采集子”的实例
多组件或深入组件通信
例如,如果我们具有这样的层次结构:
然后我们的提供/注入可以用场
在这一点上,ProvidEname的变量可以提供给其下的所有子组件,包括Great -Grandson,Grandson组件等。您只需要使用注入
该方法的优点是:
VUEX状态管理
如果您想查看官方网站vuex [https://vuex.vuejs.s.org/zh]]
总结
此时,VUE2中的组件通信方法总结了,主要分为三类:
父亲和儿子的交流:父亲通过道具将数据传递给儿子,孩子通过$ emit事件将数据传达给父亲,父母链/子链使用父母/孩子
兄弟通讯:巴士,vuex
。交叉 - 级通信:巴士,Vuex,提供/注入/注入
设置功能可以接受两个参数,Prop和上下文,上下文可以解构EMIT实例
VUE3中没有任何概念,因此不会有此概念。$ emit,因此可以从设置传输的上下文结构将是一个emit实例,以便将事件发送到parent component到parent
VUE3我们可以从VUE导出REF方法以获取子组件的实例
通过REF属性的子组件声明,属性值必须与const btnref = ref(null)声明的变量名称一致,否则将报告错误。获得子组件实例后
btnref.value?是可选链操作符号的语法。它代表了继续句子的先前价值。有兴趣的朋友可以单击以查看它。
子组件仅提供一种方法。父部件获得实例后,它还可以执行更复杂的数据通信
这里的用法与VUE2没有太大不同,直接转到案例。
使用直接提供以注入您需要通过的数据,无需考虑获得谁
后代组件使用注射来获取父组件注入的数据