在 React Native 中调用原生(iOS)方法的全过程可以分为以下几个步骤:
创建原生模块:首先,你需要在iOS项目中创建一个新的类来作为原生模块。这个类需要继承自 NSObject 并实现 RCTBridgeModule 协议。例如:
// MyNativeModule.h
#import <React/RCTBridgeModule.h>
@interface MyNativeModule : NSObject <RCTBridgeModule>
@end
// MyNativeModule.m
#import "MyNativeModule.h"
@implementation MyNativeModule
RCT_EXPORT_MODULE();
RCT_EXPORT_METHOD(doSomething) {
// 这里是你的原生代码
}
@end
注册原生模块:在你的原生模块中,你需要使用 RCT_EXPORT_MODULE() 宏来注册你的模块。你也可以提供一个参数来指定模块的名字,如果你不提供参数,那么模块的名字就会是类的名字。
导出方法:你可以使用 RCT_EXPORT_METHOD() 宏来导出你想要在 JavaScript 中调用的方法。这个宏接受一个方法名作为参数,这个方法名就是你在 JavaScript 中调用的名字。
在 JavaScript 中调用原生方法:在你的 React Native 代码中,你可以使用 NativeModules 来访问你的原生模块,然后调用你导出的方法。例如:
import { NativeModules } from 'react-native';
NativeModules.MyNativeModule.doSomething();
以上就是在 React Native 中调用原生(iOS)方法的全过程。需要注意的是,所有的原生方法都是异步的,如果你需要得到方法的返回值,你需要使用回调函数或者 Promise。
reactNative 调用原生(Android)方法的全过程
在 React Native 中调用原生(Android)方法的全过程可以分为以下几个步骤:
创建原生模块:首先,你需要在 Android 项目中创建一个新的类来作为原生模块。这个类需要继承自 ReactContextBaseJavaModule。例如:
// MyNativeModule.java
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactApplicationContext;
public class MyNativeModule extends ReactContextBaseJavaModule {
public MyNativeModule(ReactApplicationContext reactContext) {
super(reactContext);
}
@Override
public String getName() {
return "MyNativeModule";
}
}
注册原生模块:在你的原生模块中,你需要重写 getName 方法来返回你的模块名。然后,你需要在一个 ReactPackage 中注册你的模块。例如:
// MyReactPackage.java
import com.facebook.react.ReactPackage;
import com.facebook.react.bridge.NativeModule;
import com.facebook.react.bridge.ReactApplicationContext;
public class MyReactPackage implements ReactPackage {
@Override
public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
List<NativeModule> modules = new ArrayList<>();
modules.add(new MyNativeModule(reactContext));
return modules;
}
}
然后在你的 MainApplication.java 中添加这个 ReactPackage。
导出方法:你可以使用 @ReactMethod 注解来导出你想要在 JavaScript 中调用的方法。例如:
// MyNativeModule.java
import com.facebook.react.bridge.ReactMethod;
public class MyNativeModule extends ReactContextBaseJavaModule {
// ...
@ReactMethod
public void doSomething() {
// 这里是你的原生代码
}
}
在 JavaScript 中调用原生方法:在你的 React Native 代码中,你可以使用 NativeModules 来访问你的原生模块,然后调用你导出的方法。例如:
import { NativeModules } from 'react-native';
NativeModules.MyNativeModule.doSomething();
以上就是在 React Native 中调用原生(Android)方法的全过程。需要注意的是,所有的原生方法都是异步的,如果你需要得到方法的返回值,你需要使用回调函数或者 Promise。