所以我的情况就是这样:说你有通过助焊方式编写的聊天应用程序,但现在我还有一个跟踪所有连接用户的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,以便消息有指向用户的指针,因为我建议不是通量方式?
感谢。
编辑:让它更具体。
答案 0 :(得分:0)
有趣的问题......我可以看到一些可行的方法。
如果您的消息实际存储在数据库中,而您只需将它们拉入商店即可使用,那么在数据库中更新它们就很容易,因此可以选择。
第二种方式是,无论何时显示消息,如聊天窗口等,只需将UserName作为道具传递......然后当用户名更改时,它将会改变。
示例:
<div>{this.props.UserName} <div> {this.props.message} </div> </div>
当你说有一个与每条消息相关联的UserID时,这也是有意义的,这样你只需要在显示消息时检索名称。
如果您添加更多细节以了解您特别想做的事情/展示事物,我可能会给出更好的答案:P ...