在 React Native 中调用原生方法的全过程

bffd273760ea88d988b28b4aa8b0c7eb.png

在 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。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值