【发布时间】:2020-02-11 05:22:53
【问题描述】:
我有一个 Banner 组件,它根据道具显示不同的图像,例如,由 3-4 个横幅组成的页面看起来像:
<Banner type="wide"></Banner>
<Banner type="small"></Banner>
<Banner type="medium"></Banner>
当user 点击横幅时,我需要将事件传播到该页面上的所有同级组件。所以在这种情况下是一个Banner 组件。
但毕竟是mounted 的幕后组件。
在这种情况下如何共享传播数据?
【问题讨论】:
-
这取决于您要完成的工作。横幅是否会因为其中一个被点击而改变状态?如果是这样,当其中一个发出“click”事件时,父母可能会向所有人传递一个道具。
-
@DavidWeldon:你的意思是孩子 -> 父母 -> 所有孩子的(广播)?
-
child 向 parent 发出一个点击事件 -> parent 改变状态以知道哪个孩子被点击了 -> parent 将最后一次点击的
Banner的 id/name/etc 传递给每个孩子。每个孩子都可以watch更改最后点击的项目。
标签: javascript vue.js vuejs2 vue-component vuex