我是Flux/React的新手,我很难理解一些基本的体系结构决策:

  • 我知道所有商店都是单例,但是它们都是在应用程序启动时创建的,还是商店的生命周期可以缩短,具体取决于用户的操作?
  • 我可以有多个具有相同商店类型的实例,每个实例都用不同的上下文初始化吗?

  • 不幸的是,我看到的所有示例似乎都过于简单,无法回答这些问题。让我们从Facebook's chat app example开始。有多个线程,每个线程都有消息。 MessageStore包含整个应用程序的所有消息,一个名为getAllForThread(id)的方法返回过滤的消息子集。当消息进入ANY线程时,它会发出一条更改通知,使MessageSection react组件重新获取数据(无论用户正在查看哪个线程)。这显然无法扩展。如果我们每个线程有10,000个线程而又有很多消息 Activity 该怎么办?这是我决定解决此问题的方法:
  • 每个MessageStore都使用线程ID进行初始化。
  • 创建一个用于创建和管理MessageStore的单例MessageStoreFactory。
  • 当用户单击一个线程而不是React组件订阅一个全局MessageStore时,它将向MessageStoreFactory请求该特定线程的MessageStore。
  • 如果工厂已经有该线程的MessageStore,它将返回它。否则,它将创建一个,启动一个异步任务为其获取初始数据,然后将其返回。
  • 当React组件被拆除(假设用户离开它)时,它会通知Factory它已由Store完成。使用引用计数或某些其他缓存逻辑将允许工厂 trim 未使用的存储。

  • 我采用这种方法的基础距离有多远?有没有更简单的方法可以扩展?

    最佳答案

    根据用户正在查看的线程,使更加智能的数据提取似乎更容易。我可以在某些博客文章或演示中看到这个Facebook的示例吗?

    关于javascript - 如何在Flux/ReactJS中处理多个相同类型的商店?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30247481/

    10-12 03:24