[!WARNING] 本文档为非公开文档,仅用于三方库使用和开发指导,不涉及任何 React Native OpenHarmony 框架的信息,且会随着 React Native OpenHarmony 框架持续迭代更新,当前版本不代表最终展示版本。
在 React-Native 中,我们使用的组件和 API 主要有两种:
React Native 有一个庞大的社区,当核心组件和 API 不能满足需求时,开发者可以到社区中寻求合适的第三方库。一般来说,一个 RN APP 通常都会使用到各种各样的三方库。
React-Naitve 三方库主要由 JS 实现和原生实现两部分组成。通常安卓端的原生实现位于 Android
文件夹下,iOS 的原生实现位于 ios
文件夹下,JS 端的代码位于 src
文件夹或根目录下。
根据 RN 三方库的实现方式可分为:原生库,JS 库,纯 JS 库(命名为内部自行命名),根据不同的分类会有不同的移植策略。
这类库通过原生代码实现,通常使用 Java 或 kotlin(Android)和 Objective-C 或 Swift(iOS)编写。原生模块提供了与底层平台直接交互的能力,可以实现对底层功能的更深度的控制。如react-native-pager-view、progress-bar-android和react-native-slider。
特征
源码项目结构上通常在根目录或者 package 目录下有android
或ios
或apple
目录,如下图:
project-root/
|-- android/ # Android 应用源码和配置文件
|-- ios/ # iOS 应用源码和配置文件
// 或者
project-root/
|-- package/
| |-- android/ # Android 应用源码和配置文件
| |-- ios/ # iOS 应用源码和配置文件
移植
这类库需要参考原库逻辑来移植,有着如下移植点:
这类库专门为 React Native 开发,但不涉及原生实现,利用 React Native 提供的桥接机制和 API 来实现其功能,或者通过其他三方库实现二次封装的功能。如recyclerlistview、react-navigation和react-native-qrcode-svg
特征
源码项目结构上不包含原生相关目录(android/ios/apple),且 package.json 中对 react-native 有依赖。
package.json
// 有如下任意一种依赖即可
"dependencies": {
"react": "",
"react-native": "*"
}
"peerDependencies": {
"react": "*",
"react-native": "*"
}
移植
由于是基于 RN 接口的封装,所以涉及较少的开发工作,移植点包含:
这类库是纯粹的 JavaScript 模块,不依赖 React Native 平台的特定功能,可以在多种 JavaScript 环境中运行。如lodash、deepmerge和styled-system
特征
源码项目结构上不包含原生相关目录(android/ios/apple),且 package.json 中对 react-native 无依赖。
移植
由于是基于 RN 接口的封装,所以没有开发工作,主要是测试对应各个平台效果是否一致,不一致则需要反馈给框架层。因为使用的 RN 引擎是一致的,所以通常来说接口都是正常可用的。
对于 Android&iOS 平台,通过 npm 或 yarn 来安装三方库即可
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。