原生模块简介
有时候,App 需要访问平台 API,而 React Native 可能尚未提供相应的模块包装;或者您需要复用一些 Java 代码,而不是用 JavaScript 重新实现;又或者需要实现高性能、多线程的代码,如图片处理、数据库或高级扩展等。
React Native 被设计为允许在其基础上编写真正的原生代码,从而访问平台的所有能力。这是一个相对高级的特性,虽然不常在日常开发中使用,但具备这种能力非常重要。如果 React Native 不支持您所需的原生特性,您可以自行实现封装。
创建原生模块
有多种方法可以为 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 通信的原生代码,然后在 JavaScript 中调用。