React Native Context vs Redux vs AsyncStorage

ghg1uchk  于 2023-11-19  发布在  React
关注(0)|答案(1)|浏览(109)

我正在实现一个应用程序,在那里我可以导航到其他用户的配置文件。显然,进入配置文件对数据库请求有成本,也会降低用户体验(必须等待数据库响应才能显示数据)。
AsyncStorage是一个本地数据库,用来缓存数据库中的对象和数据。这个API已经过时了,有些人正在使用redux和redux-persistent来代替。
在我的应用程序中,我没有使用Redux,所以为了管理我的目的,我想我必须使用AsyncStorage。但是,React Context呢?目前,我已经实现了一个上下文提供程序“CurrentUserContext”,它有一个“VisitedUsers”Map,当我输入用户的配置文件时,我将用户数据放在其中(因此,为了避免对数据库进行不必要的查询,我只需查看该用户的数据是否在此Map中)。因此,如果用户希望查看最新的数据,他将不得不刷新(配置文件屏幕有一个拉到刷新机制)。此外,当应用程序退出时,此上下文的生命也将结束。
我的问题是:这是一个很好的选择,使用上下文为这种目的?我从来没有见过任何人这样做...这就是为什么我很怀疑。
从我的Angular 来看,这是好的,因为你真的只有一个简短的Map(这在很短的时间内完成),在一个环境中,将持续到用户关闭应用程序或注销。
小心点,我是作为一个问题来问的,因为我真的不知道这是不是一个好的做法。
谢谢

h4cxqtbf

h4cxqtbf1#

使用CurrentUserContext缓存用户配置文件数据的方法实际上非常直观,特别是在减少不必要的数据库请求方面。
以下是每种方法的优点和缺点:

1. React上下文

*优点

  • 轻松与React组件集成,并允许全局状态管理,而无需prop drilling。
  • 非常适合特定于会话的数据。如果数据不需要在应用程序启动时保持不变,则上下文是一个不错的选择。
    ***酒店:
  • 如果应用程序关闭或崩溃,上下文中的数据将丢失。
  • 对于非常大的数据集或频繁的重新呈现可能效率不高。

2.异步存储

*优点

  • 数据在应用程序启动期间持续存在,直到显式删除或应用程序被删除。
  • 异步操作,因此阅读和写不会阻塞主线程。
  • 缺点:
  • 仅限于键值存储。复杂的数据结构可能需要序列化。
  • 每次需要数据时从存储器中阅读的开销,如果数据没有保存在内存中。

3. Redux,使用redux-persistent

*优点

  • 提供结构化状态管理和丰富的生态系统。
  • redux-persist与Redux无缝集成,并保留部分或全部商店。
    ***酒店:
  • 增加了复杂性和样板代码。如果你还没有使用Redux,这可能对你的需求来说是多余的。

考虑到您当前的设置,在CurrentUserContext中使用VisitedUsersMap似乎是在会话期间缓存用户配置文件数据的合适选择。它很简单,可以完成工作。但是,如果您发现需要在应用启动期间持久化此缓存,那么您可能需要探索与AsyncStorage或类似的本地存储解决方案的集成。

相关问题