在数据层或React State层处理缓存

时间:2019-06-18 21:53:32

标签: reactjs

启动一个新的React应用程序,并且真的想避免添加Redux,而只需使用钩子就可以完成所有操作。我现在遇到的一个问题是在页面导航之间我要重装很多数据。

我知道我可以将这些数据存储在Context API中。

但是,我想知道是否仅在ServiceClient层编写缓存逻辑。我所有的React View都会在每次安装/更新时请求数据,但是是否从缓存或网络中获取数据的决定将在某个ApiController级别进行。

通常,我会将归一化的数据存储在Redux状态下,但是这总是变得有点麻烦。

这有意义还是反模式。

1 个答案:

答案 0 :(得分:0)

我已经使用这种逻辑构建了一个现成的生产应用程序。每当我获取大量数据(即某种列表)时,基本上都是这样:

  1. View使用onSuccess和OnFailure回调以及API调用函数向DataManager(单例)请求数据。
  2. 然后,DataManager通过AsyncStorage检查与请求匹配的先前数据是否在内存中和/或磁盘上。如果是这样,它将调用onSuccess回调。
  3. DataManager进行了API调用以获取更新的数据,然后再次调用onSuccess,后者使用最新数据更新了视图。
  4. 如果发生任何错误,则会调用onFailure回调。

如果您想简化一些事情,可以使用react-navigation,它可以使视图在装载/卸载之间保持其状态。