我现在是Vue.js的一个项目,并创建并使用了很多组件。 现在我开始遇到需要跟踪的太多的eventemitters和道具的问题。
我想用最好的例子说明问题:
假设您有一个main.vue和2或3个组件。 一个按钮应该操作其他2个组件或将其切换出来。
现在我需要向main.vue发出一个事件,然后main.vue必须更改一个绑定变量并将props传递给其他两个组件。 好吧:现在让我们将按钮放在组件的一个组件中。您需要确保父母和孩子之间的每个链接都是正确的。
现在创建一个项目并在另一个组件中放置一个按钮,你必须改变一切。
那么有一个避免这种情况的好方法吗? 像广播功能,以便每个组件都接收事件? 还是处理所有组件通信的经理?
答案 0 :(得分:2)
使用通量模式(vuex)
首先,您可能认为这并没有真正回答这个问题,因为它涉及数据存储,而不处理事件。通量模式通过创建所有组件可以读取和写入的单个存储(思考数据库)来更改应用程序的体系结构。与反应性框架(例如vue(或反应))的反应性质相结合,组件将对数据的变化做出反应。因此,不是通过A
和D
将组件B
与C
紧密耦合,而是让组件A
侦听对象{{1}中的突变}}和组件X
对对象D
进行更改。当更改发生时,组件X
会更新,而不必听取任何子项的A
函数触发。起初它似乎令人生畏,但投资是值得的。