首页 文章

Vuejs:组件之间的共享状态

提问于
浏览
1

我想知道在Vuejs中实现组件之间共享状态的最佳实践 .

想象一下情况A:你有一个显示模态的网络应用程序 . 模态具有布尔状态 show . 如果单击模态确定按钮,则此状态应更改,但如果单击后台的任何部分,甚至可能在某些服务器上推送状态更改 . 因此,模态应该能够像父应用程序一样改变状态 .

情况B:您有一个Web应用程序,它显示共享公共数据的不同组件内的输入字段 value . 如果用户通过一个组件中的字段更改 value ,则还应在另一个组件中更新 . 两者都应该更新服务器推送事件 .

问题:

  • 我是正确的,正确的方法是使用vuex并使共享状态成为一个存储字段,由需要修改该值的所有组件/父级通过发出的操作观察和更改?

  • 这不会引入我们从Meteor知道的这种危险(因为难以处理)的魔法反应吗?

  • 如何最好地记录流程,具体取决于什么?

1 回答

  • 4

    A :对于模态组件,我会说 show 应该是道具 . 所以父组件可以随心所欲地控制模态 . 在这种情况下,根本没有共享状态 .

    模态本身不需要了解服务器的任何信息 . 如果prop showtrue ,则只显示模态,反之亦然 .

    我认为遮罩层是模态的一部分,因此当单击遮罩时,模态会发出一个事件 . 父组件接收事件并且可以决定隐藏模态或不隐藏模态 .

    Vue在这里有一个官方模态示例(感谢@craig_h提及):https://vuejs.org/v2/examples/modal.html


    B :只需将vuex状态绑定到输入 . 没有错 .


    请注意,并非所有组件都需要直接访问vuex存储 . 对于一些纯UI组件,只需使用props . 因此,父组件有权控制它们并增加灵活性 .

    我建议你阅读这些文档:

    Yes these are React / Redux docs . 由于Vue相对年轻,反应社区有更多的文档/文章 . 但Vue和React都是基于组件的库 . 您如何设计组件的想法基本相同 .

    您还可以查看此vuex示例:https://github.com/vuejs/vuex/tree/dev/examples/chat

    这是一个非常简单的例子,但它确实使用了我上面提到的所有内容 . 发出一个事件,一些纯UI组件......

相关问题