React Native原生模块之数据获取(Android篇)

其实还算简单,我们直接@Override重写一个getConstants函数即可。

定义函数

在Module中定义

@Override
public class ToastModule extends ReactContextBaseJavaModule {

    ...
    @Override
    public Map<String, Object> getConstants() {
        // 代码写这里
    }
    ...
}

定义参数

在上述创建的函数中,需要返回一个Map对象,该对象存储的数据第一个String类型为参数名称,第二个Object类型为该参数值。

@Override
public Map<String, Object> getConstants() {
    final Map<String, Object> constants = new HashMap<>();

    constants.put("LONG", Toast.LENGTH_LONG);
    constants.put("SHORT", Toast.LENGTH_SHORT);

    return constants;
}

获取参数

那么,我们如何在RN代码中获取该参数值呢?很简单:

import { NativeModules } from 'react-native';

const MyModule = NativeModules.MyModule;

console.log('LONG VAL=', MyModule.LONG);
console.log('SHORT VAL=', MyModule.SHORT);

使用参数

参数我们定义好了,也能在rn端获取到了,那么我们如何传递到原生模块方法中?
很简单,在定义方法的时候多加一个参数,然后在rn端也同步传递参数即可。
比如原生端这么写:

@ReactMethod
public void show(String msg, int sType) {
    Toast.makeText(mContext, msg, sType).show();
}

那么,我们就在rn端这么调用:

MyModule.show("testMessage", MyModule.LONG);

很简单吧!

总结

本文的核心就是在自定义的原生模块中创建一个getConstants方法,用来定义能传递进来的参数数据。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,742评论 25 709
  • 在原生的开发中使用高德或者百度地图实现定位等相关功能是每一个小伙伴必备的技能,那么现在我要在RN中实现定位的功能该...
    JustCode阅读 9,100评论 9 13
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,212评论 19 139
  • 2007年8月20号,一只毛茸茸的小家伙,来到我们身边。那时候它两个月。2016年6月,它即满九岁。想为阿布写点什...
    Ivy圆圈圈阅读 2,726评论 0 0
  • 为什么用二进制数表示计算机信息? IC的构成是主因 计算机内部由IC(集成电路,Integrated Circui...
    墨白找阅读 3,345评论 0 0

友情链接更多精彩内容