react-native文档未更新,照着文档实现还是坑了不少,记录下基本步骤。
1,继承ReactContextBaseJavaModule a,getName:模块名称 b,getConstants:常量映射 c,@ReactMethod注解暴露java方法 public void show(String message,int duration) { Toast.makeText(getReactApplicationContext(),message,duration).show(); } 2,注册原生模块 a,提供一个ReactPackage(继承ReactPackage) b,public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) 添加原生模块。 public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) { List<NativeModule> modules = new ArrayList<>(1); modules.add(new MyToast(reactContext)); return modules; } c,注册包(ReactPackage) 1),ReactInstanceManager.addPackage原生实现的ReactPackage; 2),ReactApplication重写getPackages. protected List<ReactPackage> getPackages() { return Arrays.<ReactPackage>asList( new MainReactPackage(),new MyReactPackage() ); } 3,js使用 a,js引入原生模块 var { NativeModules } = require('react-native'); var MyToast = NativeModules.MyToast; b,调用 MyToast.show('you click me!',MyToast.SHORT);