Rau*_*aul 5 javascript caching design-patterns reactjs react-native
在我的 React 开发生涯中,我发现我们可以在 RN 应用程序中使用多种缓存/持久化。
第一个是 React Native 直接提供的AsyncStorage。这允许我们将数据存储在用户设备的持久性中。
我们还可以开发自己的内存缓存,它可以通过避免向服务器发出不必要的请求来提高应用程序的性能。
最后一个对我来说不是缓存,是React Context。这个工具对于同步我们的应用程序路由来说非常酷。例如,典型的 UsersProvider,我们可以在其中存储用户数据的上下文。我也看到一些程序员也使用这个工具作为“缓存”。
我的问题是关于干净的代码。在结合了这 3 个“工具”的 React 架构中,我们如何正确地将它们的使用委托给应用程序的每个部分?
例如,在具有以下文件夹的项目中
components/
auth/
AuthForm.js
contexts/
users/
UsersContext.js
screens/
Profile/
EditProfile.js
services/
api/
firebase/
content/
getContentFeed.js
cache/
contentCache.js
users/
getUserData.js
cache/
usersCache.js
Run Code Online (Sandbox Code Playgroud)
在不考虑第三个工具(上下文)的情况下,上下文是专门可从钩子/组件使用/访问的,每个“memoizer”(异步存储和内存中缓存)应该在哪里使用而不违反任何模式或“干净代码”规则?
AsyncStorage 是否设计为可在任何地方使用?我的意思是,在组件、钩子、上下文、类、utils、helpers、api...内部有完全的自由吗?
内存缓存怎么样?例如,看一下我的“usersCache.js”,我在其中存储从服务器获取的用户数据。正如你所看到的,我已经定义了自己的 api 来向后端发出请求...所以,如果在我的“getUserData.js”中我正在从缓存中存储/获取/更新数据,以避免发出不必要的请求,你会吗?您是否认为在 api 外部(组件内部或前端的任何位置)使用这种缓存是不良组织或反模式的产物?
有什么建议或建议吗?