当前位置: 首页 > 面试题库 >

VueJs 2.0中同级组件之间的通信

殳阳飙
2023-03-14
问题内容

总览

在Vue.js2.x中,model.sync将不推荐使用。

那么,在[Vue.js2.x中的]兄弟组件之间进行通信的正确方法是什么?

背景

据我了解Vue 2.x,同级通信的首选方法 是使用商店或事件总线

根据Evan(Vue的创建者)的说法:

值得一提的是,“在组件之间传递数据”通常不是一个好主意,因为最终数据流变得不可跟踪且很难调试。

如果一条数据需要由多个组件共享,则首选全局存储或Vuex。

和:

.once.sync已弃用。现在,道具总是单向下降。为了在父作用域中产生副作用,组件需要显式地emit事件而不是依赖隐式绑定。

因此,Evan建议使用$emit()$on()

顾虑

让我担心的是:

  • 每个storeevent具有全球知名度(纠正我,如果我错了);
  • 为每次次要沟通创建新的商店太浪费了;

我想要的是兄弟姐妹组件的某种 范围 eventsstores可见性。(或者也许我不理解上面的想法。)

那么,同级组件之间进行通信的正确方法是什么?


问题答案:

你甚至可以使其更短,并将根 Vue实例用作全局事件中心:

组件1:

this.$root.$emit('eventing', data);

组件2:

mounted() {
    this.$root.$on('eventing', data => {
        console.log(data);
    });
}


 类似资料:
  • 问题内容: 我是React的新手,我想问一个战略问题,关于如何最好地完成必须在同级组件之间传递数据的任务。 首先,我将描述任务: 假设我有多个组件,它们是一个单亲的子代,它们通过数组动态地向下传递选择框。每个框在其初始状态下具有完全相同的可用选项,但是一旦用户在一个框中选择了某个特定选项,则必须将其作为所有其他框中的选项禁用,直到将其释放。 这是(傻)代码中的相同示例。(我用作创建选择框的简写。)

  • 利用react的机制进行通信 ref属性 <Text ref={(com)=>this.text = com} /> 父类更新子类 父类把state作为属性传递给子类的props,任何时候state改变,会触发子类的componentWillUpdate 以下例子任何时候state的id改变,child里的componentWillUpdate会被触发 class ChildCom ext

  • 问题内容: 我有一个ListComponent。在ListComponent中单击某个项目时,该项目的详细信息应显示在DetailComponent中。两者同时显示在屏幕上,因此不涉及路由。 如何告诉DetailComponent单击ListComponent中的哪个项目? 我考虑过向父对象(AppComponent)发出事件,并让父对象使用@Input在DetailComponent上设置sel

  • 问题内容: 我在页面上有一个组件的两个实例(搜索字段),在它们之间有另一个组件(进行服务器调用的按钮),例如: 我要做的只是将一个未修改的参数从CardSearch字段传递到RunOnServer按钮,但是如果简单的话,我该死的。据此,我可以使用this.state.var作为道具,但是这样做可以在编译代码时给我’undefined.state.var’。React的官方文档并不出色。他们只是告诉

  • 问题内容: JPanel和JFrame有什么区别,以及与轻量级,重量级的关系? 问题答案: JPanel是允许将多个UI组件放在一起的容器。JFrame是使用Swing编写的窗口。 所有的Swing组件都是所谓的“轻型”组件,因为它们是用Java编写的。例如,如果您运行Swing应用程序并尝试使用UI分析工具(例如Windows中的WinSpy)对其进行分析,则只会看到一个元素:窗口(JFrame

  • 本文向大家介绍vue组件之间的通信都有哪些?相关面试题,主要包含被问及vue组件之间的通信都有哪些?时的应答技巧和注意事项,需要的朋友参考一下 父子Coms: 1/2/3 .. 兄弟Coms: 4/5 跨级Coms: 4/5/6/7 props $emit/$on ( $parents/$children ) / $refs Vuex Bus ( provide/inject ) ( $attrs