首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在react或vuejs中的组件之间进行通信时,使用回调和事件有什么不同?

在react或vuejs中的组件之间进行通信时,使用回调和事件有什么不同?
EN

Stack Overflow用户
提问于 2016-09-02 01:14:45
回答 2查看 320关注 0票数 0

正如标题所述,我对在react或vuejs中父-子组件之间的通信感到困惑。

组件之间有两种不同的通信方式。

  • 首先,我们可以将方法作为支撑传递给子组件,然后子组件可以通过该方法与父组件进行通信;
  • 其次,我们还可以在子组件中分派一个事件,父组件可以侦听事件,然后执行一些操作。

我的困惑是difference.When应该使用什么方法,什么时候应该使用事件?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-02 01:36:59

道具通常不是一种方法,而是表示某种程序状态的数据项。尽管子程序可以(.sync)修改道具并将更改传播到父级,但最常见的情况是子节点只从父节点接收道具并反映来自父方的更新。

事件是一种表示发生了什么事情的方式,就像用户单击一个按钮一样。该组件分发一个事件,以便父组件(或任何其他组件)能够更改状态(状态将通过支持向下传播)。

通常的规则是道具属于孩子,事情由父母决定。

票数 1
EN

Stack Overflow用户

发布于 2016-09-02 07:29:51

区别主要是语义上的。

你可以从父母那里监听孩子的一个事件,比如:<child @child-event="callbackMethod">

在内部发生的事情基本上与通过道具传递回调相同:callbackMethod将在内部注册为要在$emit事件child-event中执行的回调。

因此,在我的书中,它的优势在于它的明确性:

  • 当我在子程序中发出事件时,任何阅读我的代码的人都会立即清楚地知道,我想要与外界交流一些东西。
  • 另一方面,当我在子模板中执行回调时,读者必须意识到,这个函数不是子函数的内部method,而是来自父模板的prop,因此将在父模板的作用域中执行回调。
  • 父模板也是如此:通过查看模板,我可以立即看到传递给城镇:a-prop="data"的是什么,以及当子元素发出事件:@some-event=callback"时将执行什么回调。
  • 有了道具中的回调,我必须依赖于道具的良好命名来传达这样的信息:这不是“数据向下”,而是一个回调来获得“备份”。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39282980

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档