原生模块简介
本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →
本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →
原生模块(Native Module)和原生组件(Native Components)是旧架构中使用的稳定技术。它们将在新架构稳定后被弃用。新架构采用 Turbo 原生模块 和 Fabric 原生组件 来实现类似功能。
有时 React Native 应用需要访问 JavaScript 默认无法使用的原生平台 API,例如调用 Apple Pay 或 Google Pay 的原生 API。您可能希望复用现有的 Objective-C、Swift、Java 或 C++ 库而无需用 JavaScript 重新实现,或是编写高性能的多线程代码来处理图像处理等任务。
NativeModule 系统将 Java/Objective-C/C++(原生)类的实例作为 JavaScript 对象暴露给 JS,从而允许您在 JS 中执行任意原生代码。虽然这个功能不属于常规开发流程,但它的存在至关重要。如果 React Native 没有导出您的 JS 应用需要的原生 API,您完全可以自行导出!
原生模块设置
为 React Native 应用编写原生模块有以下几种方式:
-
创建可在 React Native 应用中导入的本地库。阅读创建本地库指南了解更多。
-
直接在 React Native 应用的 iOS/Android 项目中编写
-
打包为 NPM 模块,供您或其他 React Native 应用安装依赖
本指南将首先引导您在 React Native 应用中直接实现原生模块。但您接下来构建的原生模块也可以分发为 NPM 包。若您有此需求,请查看将原生模块设置为 NPM 包指南。
入门指引
后续章节将引导您在 React Native 应用中直接构建原生模块。作为前提条件,您需要准备一个 React Native 应用。如果还没有,可以按照此处的步骤创建。
假设您需要在 React Native 应用中通过 JavaScript 访问 iOS/Android 原生日历 API 来创建日历事件。React Native 默认不提供与原生日历库通信的 JavaScript API。但借助原生模块,您可以编写与原生日历 API 通信的代码,然后通过 React Native 应用中的 JavaScript 调用这些原生代码。