在 React-Native 移动应用程序中处理数据的最佳方法是啥?

Posted

技术标签:

【中文标题】在 React-Native 移动应用程序中处理数据的最佳方法是啥?【英文标题】:What are the best ways to Handle data in React-Native Mobile App?在 React-Native 移动应用程序中处理数据的最佳方法是什么? 【发布时间】:2018-07-09 07:13:42 【问题描述】:

由于我来自 Objective-c / Swift 背景,并且不熟悉 React 和 React-Native,因此很难融入新环境。我对 React-Native 进行了一些研究,这有助于我理解一些基本概念,如组件、状态、道具等。

我被困在 React-native 应用程序如何处理数据的部分,比如存储和获取。在 ios 中,我们可以使用 core data 框架来处理所有这些东西。在这些研究中,我遇到了 Redux 和 AsyncStorage。大多数教程都推荐使用 Redux 来存储数据。但我的理解是,它们有助于存储或处理应用程序的States,而 AsyncStorage 仅用作 key-value 存储。

从 iOS 开发人员的角度来看,在使用 React-Native 应用程序(如 coreData)时,处理数据的最佳解决方案是什么。

我确实看过这个查询:

What are my options for storing data when using React Native? (iOS and android)

但我对解决方案不满意。有谁能帮帮我吗?

【问题讨论】:

您提到的解决方案非常全面。你觉得缺少什么? @Kraylog 如果我有大量的 JSON 数据(或其他)要存储,Redux 或 AsyncStorage 将帮助我实现它。如果我错了,请纠正我,因为我是 React 的新手。 Redux 是一个内存存储,所以这可能不是您想要的。 AsyncStorage 基本上是 iOS 和 Android 中持久性机制的一个抽象层(一个文件和一个简单的文件 db)。您可能可以将大部分内容存储在某个点上。 React Native 生态系统中的存储解决方案更加模块化,并且依赖于对您的用例的理解,因为任何解决方案都需要为 iOS 和 Android 公开统一的 API。因此,要弥合两个生态系统中的各种实施差异要困难得多。因此,如果您正在寻找像 core data 这样的包罗万象的 API,目前您找不到。回答你的问题……至少很难说。我已经尝试过了,但我的文章未完成。该链接是目前最好的概述。为了更好地提供帮助,您如何定义“最佳”? 【参考方案1】:

我知道它已经在您提供的相关链接中,但只需添加 redux-persistsredux 即可满足 iOS、Android、Electron 和 Web 应用程序的大部分存储要求。

至于复杂性,归根结底,在大多数存储引擎案例中,所有 JSON 在底层都是字符串化的,因此如果您需要更复杂的数据集,嵌套并不是什么大问题。

redux-persists 为您管理存储引擎。

更多信息:https://github.com/rt2zz/redux-persist#storage-engines

【讨论】:

注意事项,因为 OP 在评论中提到了大量 JSON 数据:1) you do not want to use this for large datasets 2) 这仅适用于您使用 Redux 进行状态管理(OP 似乎不了解区别在 Redux/state/props 和如何存储核心数据之间) 3)虽然是一个很棒的模块,但存储引擎的选择取决于您,这将使 OP 回到原来的状态,即不了解处理某些问题的最佳方式用例。 @MichaelCheng 1) 同意。在响应查看大数据集评论之前没有刷新。 2)主观上,如果你管理正确但你是对的,你可以将redux用于核心数据,在这样做之前需要了解差异。反响很好! @MichaelCheng 如果我继续为大量数据存储redux,我将面临同样的问题。我仍然在这里研究更好的解决方案。感谢您的回复。 @MichaelCheng 如果我将 Realm 与 Redux 一起使用会不会很好。大多数消息来源说,如果我们要处理大量数据或只是需要更快的本地存储,Realm 就很好。

以上是关于在 React-Native 移动应用程序中处理数据的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 react-native 中定位移动应用的用户?

react-native解决键盘自适应

在 React-Native 移动应用程序中检测角速度

在 React-Native/Expo 移动应用程序上设置 Detox 时出错:“ReferenceError: element is not defined”

为啥我的代码不能在 web 中的 react-native 代码中运行

使用 graphql 在 react-native 中重新获取查询