Flux架构嵌套和非单件商店

时间:2015-07-14 04:02:53

标签: javascript backbone.js flux

我在页面加载时得到了所有数据,JSON看起来如下:

{
  users: [
    {
      userId: 1,
      messages: [
        {
          messageId: 1,
          lines: [/* array of lines */]
        },
        {
          messageId: 2,
          lines: [/* array of lines */]
        }          
      ],
    },
    {
      userId: 2,
      messages: [
        {
          messageId: 3,
          lines: [/* array of lines */]
        },
        {
          messageId: 4,
          lines: [/* array of lines */]
        }          
      ],
    },
  ]
}

作为我的问题的一个例子,说我正在尝试实现一个消息选择功能。每个用户一次只能有一条消息selected。当我调用动作创建者selectMessage(messageId)并将其传递给我的MessagesStore时,如何知道哪个用户应该选择该消息?

我看到的唯一选项是将userId向下传递给视图层次结构,然后将其添加到操作创建者 - 处理UsersStore而不是MessagesStore中的操作。我是否认为架构错了?

1 个答案:

答案 0 :(得分:0)

选择将其保存到哪个商店取决于您选择将商店与组件相关联的方式。有些人认为每个组件都应该拥有自己的商店。 (我不是)。其他人试图将商店视为资源(如REST)。这听起来像你正在学习的那样?

这当然也可以工作,但我总是发现资源的基本思想(在RESTful架构中表达)有点人为和​​限制。我更喜欢将商店视为相关数据的集合,但没有强大的资源结构凝聚力。

这是一种啰嗦的说法,我认为你所概述的方法都很好。我试图问自己的问题是:后来,当我的应用程序变得更大时,显然哪个商店会保留一些特定数据?