React Native | 创建IOS原生模块
在React Native中创建iOS原生模块通常涉及以下步骤:
- 创建一个符合
RCTBridgeModule
协议的Objective-C类或Swift类。 - 实现模块的方法,以便可以从JavaScript调用。
- 注册模块,以便React Native知道它的存在。
- 在项目的
Podfile
中添加模块,并运行pod install
。 - 从React Native JavaScript代码中导入和使用模块。
以下是一个简单的例子,展示如何创建一个简单的iOS原生模块,该模块仅提供一个方法来显示一个简单的alert。
Objective-C版本:
// RNMyModule.h
#import <React/RCTBridgeModule.h>
#import <React/RCTLog.h>
@interface RNMyModule : NSObject <RCTBridgeModule>
@end
// RNMyModule.m
#import "RNMyModule.h"
@implementation RNMyModule
RCT_EXPORT_MODULE();
RCT_EXPORT_METHOD(showAlert:(NSString *)message) {
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"My Module" message:message preferredStyle:UIAlertControllerStyleAlert];
[alertController addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:nil]];
UIViewController *rootViewController = [UIApplication sharedApplication].delegate.window.rootViewController;
[rootViewController presentViewController:alertController animated:YES completion:nil];
}
@end
Swift版本:
// RNMyModule.swift
import React
@objc(RNMyModule)
class RNMyModule: NSObject {
@objc func showAlert(_ message: String) {
DispatchQueue.main.async {
let alertController = UIAlertController(title: "My Module", message: message, preferredStyle: .alert)
alertController.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
let rootViewController = UIApplication.shared.delegate?.window??.rootViewController
rootViewController?.present(alertController, animated: true, completion: nil)
}
}
}
然后,在Podfile
中添加以下行:
pod 'RNMyModule', :path => '../node_modules/react-native-my-module/ios'
最后,在React Native项目的JavaScript代码中使用模块:
import { NativeModules } from 'react-native';
NativeModules.RNMyModule.showAlert('Hello from iOS!');
确保在使用模块之前,已经通过react-native link
命令或手动配置了项目的Header Search Path
和Framework Search Path
。
评论已关闭