首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >中的Redux非常慢,有大量数据

中的Redux非常慢,有大量数据
EN

Stack Overflow用户
提问于 2019-01-11 00:53:38
回答 1查看 3.9K关注 0票数 15

我在一个Redux变量中存储了大量的JSON对象(~8k项,每个对象约1kb,总共为8mb)。这似乎使Redux调用变得很慢,即使对于最琐碎的操作和还原程序来说,它们实际上什么也不做。例如,调用此doNothing()操作和还原程序会在设备上产生500 on的等待时间,而不需要在调试器上运行:

代码语言:javascript
复制
// action
export const doNothing = () => {
  return {
    type: DO_NOTHING
  };
};

// reducer
export default (state = INITIAL_STATE, action) => {
  switch (action.type) {
    case DO_NOTHING: {
      return state;
    }
    default:
      return state;
  }
};

我最好的尝试是通过slowlog来分析这个问题,我在这里为Redux组件中的Redux调用提供了500 My的数据。对于较小的数据集(~500项),我仍然需要等待,但它更接近100‘s。这一切都在设备上,并且在模拟器和调试器上会变慢。我只是用一个按钮在一个简单的视图上测试这一点,以排除昂贵的重新选择和重新呈现带来的复杂情况。一个可能的复杂因素是,我使用的是redux-offline,它将Redux存储持久化到AsyncStorage,但是,当我关闭持久性时,性能却同样差。

理想情况下,我直接解决瓶颈,但我也对解决办法持开放态度。我试着用setTimeout包装动作调用,但这似乎推迟了我的React的减速。

谢谢您的建议!

EN

回答 1

Stack Overflow用户

发布于 2021-06-14 18:25:35

在redux状态下存储大量数据(间接存储在RAM中)并不是一种可靠的方法。

最佳做法是使用本地数据库,以便将数据存储在存储内存中。

对于ReactNative,有一个流行的数据库Watermelon DB适合这种情况

请查看它的文档:https://nozbe.github.io/WatermelonDB/

以下是它解决的方法

对于简单的应用程序,使用Redux或MobX和持久性适配器是最简单的方法。但是,当您开始扩展到数千或数万个数据库记录时,您的应用程序的启动速度将会很慢(尤其是在运行速度较慢的Android设备上)。将一个完整的数据库加载到JavaScript中是很昂贵的!西瓜靠懒惰来解决问题。在被请求之前没有装载任何东西。而且,由于所有查询都是在独立的原生线程上直接在SQLite数据库上执行的,所以大多数查询都是在瞬间解析的。

使用西瓜数据库存储/检索大型数据

同时,使用redux状态只存储小数据。

希望这能有所帮助

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54138976

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档