Who is responsible to fetch data from server in a flux app with caching?

In the flux webchat example application and in the README diagram, it seems like the action creator should retrieve the data from the server.

通量数据流

The problem I see is that no fetch might be required if the data is already in the store. The store is the only one to know, so the action need to actually be dispatched.

I think it's better to fetch dernormalized data when possible, to minimize xhr calls. If the store is denormalized eg MessageStore will contain all the data it needs to render Messages. Every message look like

{
 "id": 42
 "message": "Héllo, you tried reactjs-flux too. Awesome isn't it!"
 "user": {id: 1337, username: "amirouche", bio: "maker"},
 "likes": [{id: 2600, username: "NinjaTurtle"}, {id: 2601, username: "Peer"}
}

The store might have the responsability (through events?) to update the UserStore with the partial user models.

Another way I think of, is to have some normalized stores, and create a specific stores with a schema the view expects.

In this situation, it seems to me the action creator is only useful to dispatch the payload ie. it's useless.

What do you think?


I usually have my store dealing with fetching data. Doing it this way make sure that all the logic can be managed by the store itself, and you have total control on when/how/why you fetch data.

The fact that you can also have stores communicating with each other is also another pro for why the stores should be in charge of handling/fetching data.

Also, as the Flux pattern describes: "Stores contain the application state and logic. Their role is somewhat similar to a model in a traditional MVC, but they manage the state of many objects.." It does make sense to have the stores managing the fetching of data from APIs/server-side.

链接地址: http://www.djcxy.com/p/83638.html

上一篇: 引用框架需要Xcode6代码签名?

下一篇: 谁负责在缓存中通过应用程序从服务器获取数据?