Flux Store数据指针与依赖关系

时间:2015-04-17 15:26:41

标签: reactjs reactjs-flux flux

所以我的情况就是这样:说你有通过助焊方式编写的聊天应用程序,但现在我还有一个跟踪所有连接用户的UserStore。消息具有文本和发送消息的用户的ID。用户可以更改其名称,因此如果用户更改其名称,我希望该用户发送的所有先前消息都更新其名称。

服务器将此数据发送给客户端:

Message = { id: int, text: string, authorId: int } User = { id: int, name: string }

现在我想显示每条消息:

User.get(message.id).name : message.text

如果没有Flux模式,我只会向Message添加一个字段,该字段是指向User的指针,即

Message = { id: int, text:string, authorId: int, author: User }

然后我可以按如下方式显示它:

message.author.name : message.text

但我觉得这不是“通量方式”。所以我现在有一个MessageStore和一个UserStore。

问题是:我应该从UserStore中检索正确的用户以获取其名称以显示它?

i)我应该通过添加authorName并在“CHANGE_USER”调度上放置一个监听器然后适当更新authorName来将此逻辑放在MessageStore中吗?

ii)或者我应该将它放在显示消息的组件中并在那里监听MessageStore和UserStore?

iii)或者为什么我不应该只更新我的MessageStore,以便消息有指向用户的指针,因为我建议不是通量方式?

感谢。

编辑:让它更具体。

1 个答案:

答案 0 :(得分:0)

有趣的问题......我可以看到一些可行的方法。

如果您的消息实际存储在数据库中,而您只需将它们拉入商店即可使用,那么在数据库中更新它们就很容易,因此可以选择。

第二种方式是,无论何时显示消息,如聊天窗口等,只需将UserName作为道具传递......然后当用户名更改时,它将会改变。

示例:

<div>{this.props.UserName} <div> {this.props.message} </div> </div>

当你说有一个与每条消息相关联的UserID时,这也是有意义的,这样你只需要在显示消息时检索名称。

如果您添加更多细节以了解您特别想做的事情/展示事物,我可能会给出更好的答案:P ...