其實還算簡單,我們直接@Override
重寫一個getConstants
函數(shù)即可厅翔。
定義函數(shù)
在Module中定義
@Override
public class ToastModule extends ReactContextBaseJavaModule {
...
@Override
public Map<String, Object> getConstants() {
// 代碼寫這里
}
...
}
定義參數(shù)
在上述創(chuàng)建的函數(shù)中乖坠,需要返回一個
Map
對象,該對象存儲的數(shù)據(jù)第一個String
類型為參數(shù)名稱刀闷,第二個Object
類型為該參數(shù)值熊泵。
@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;
}
獲取參數(shù)
那么,我們?nèi)绾卧赗N代碼中獲取該參數(shù)值呢甸昏?很簡單:
import { NativeModules } from 'react-native';
const MyModule = NativeModules.MyModule;
console.log('LONG VAL=', MyModule.LONG);
console.log('SHORT VAL=', MyModule.SHORT);
使用參數(shù)
參數(shù)我們定義好了顽分,也能在rn端獲取到了,那么我們?nèi)绾蝹鬟f到原生模塊方法中施蜜?
很簡單卒蘸,在定義方法的時候多加一個參數(shù),然后在rn端也同步傳遞參數(shù)即可翻默。
比如原生端這么寫:
@ReactMethod
public void show(String msg, int sType) {
Toast.makeText(mContext, msg, sType).show();
}
那么缸沃,我們就在rn端這么調(diào)用:
MyModule.show("testMessage", MyModule.LONG);
很簡單吧!
總結(jié)
本文的核心就是在自定義的原生模塊中創(chuàng)建一個getConstants
方法修械,用來定義能傳遞進(jìn)來的參數(shù)數(shù)據(jù)趾牧。