Javascript Flux:商店是否应该告知组件什么';什么改变了?

Javascript Flux:商店是否应该告知组件什么';什么改变了?,javascript,architecture,redux,flux,refluxjs,Javascript,Architecture,Redux,Flux,Refluxjs,我有一个关于诸如Flux和相关的web应用程序架构的问题。请注意,我没有使用React.js,这个问题纯粹是关于架构的。 如果我正确理解Flux中的概念,则存储会通知组件更改。然后,组件应该从存储中获取所有数据。当我想确切地知道数据中发生了什么变化时,会发生什么?当使用ReactJS时,可以将整个数据提供给React,然后使用精心设计的diff和虚拟DOM算法应用更改。但是,如果没有反应,并且有大量数据,该怎么办 现实生活中的例子 新数据每1-2秒通过WebSocket发送一次。数据被添加到存储

我有一个关于诸如Flux和相关的web应用程序架构的问题。请注意,我没有使用React.js,这个问题纯粹是关于架构的。

如果我正确理解Flux中的概念,则存储会通知组件更改。然后,组件应该从存储中获取所有数据。当我想确切地知道数据中发生了什么变化时,会发生什么?当使用ReactJS时,可以将整个数据提供给React,然后使用精心设计的diff和虚拟DOM算法应用更改。但是,如果没有反应,并且有大量数据,该怎么办

现实生活中的例子 新数据每1-2秒通过WebSocket发送一次。数据被添加到存储中,但其中一个组件需要确切地知道发生了什么变化(假设新数据需要以某种动画显示在视图中)。有很多数据,迭代整个数组并比较每个元素不是一个选项。此外,直觉上它感觉不正确,因为应用程序的某些部分确切地知道它改变了什么,所以为什么视图不能

我在寻找解决方案,发现了三种建议方法:

  • 商店会准确地通知更改的内容(违反流量规则)
  • 存储保留最后的更改并提供一个公共方法
    getLastChanges()
  • 仅保留最后更改的数据的附加存储
  • 从架构上讲,这里的正确解决方案是什么

    但是,如果没有反应,并且有大量数据,该怎么办

    在这种情况下,Flux体系结构并不适用。你为什么要用它


    当视图(或订阅存储的任何内容)能够仅基于当前(有时是以前)状态的知识有效地执行操作时,Flux工作得很好。如果你的领域不是这样,不要使用Flux。

    听起来EventEmitter更适合你的项目。既然套接字本身就是一个,那么就给套接字两个处理程序吧?一个是原样,另一个是直接发送给爱管闲事的代码。为什么要纠缠其他不在乎的事情?在低层次上分离您的顾虑。不是所有的东西都是钉子,因为你有一把漂亮的锤子。常规-@ss编程仍然有效,而且通常更好。它实际上是有意义的!:)组件获取实时数据,而存储一直是真相的来源,因为它始终拥有所有数据。如果您不使用React,我对组件部分一无所知,但如果您必须分派()每个套接字事件,那么#2是最不容易破解的,或者,您可以使用
    lastChanged
    属性来扩充状态,以便下游消费者可以访问它,通知
    shouldComponentUpdate()
    -就像选择器一样。组件不是为React保留的词,有Web组件、AngularJS中的组件,或者通常是具有解耦含义的组件,独立的应用程序片段。谢谢您的建议:)