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

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

定义函数

在Module中定义

@Override
public class ToastModule extends ReactContextBaseJavaModule {

    ...
    @Override
    public Map getConstants() {
        // 代码写这里
    }
    ...
}

定义参数

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

@Override
public Map getConstants() {
    final Map 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方法,用来定义能传递进来的参数数据。

你可能感兴趣的:(React Native原生模块之数据获取(Android篇))