美文网首页
ReactNative与原生之间的接口交互

ReactNative与原生之间的接口交互

作者: gogoingmonkey | 来源:发表于2017-11-22 17:14 被阅读448次

    ReactNative与原生之间的接口交互

    React与Native交互官网

    https://facebook.github.io/react-native/docs/native-modules-android.html

    一、实现ReactContextBaseJavaModule接口

    比如要做一个统计功能的Api,需要调用Java代码进行数据统计上报.

    先新建一个Java类Statics.java

    public class Statics extends ReactContextBaseJavaModule {
    
        public Statics(ReactApplicationContext reactContext) {
            super(reactContext);
        }
    
        //这里要返回一个名称,在JS文件里导出成模块需要根据该名称查找当前接口;
        @Override
        public String getName() {
            return "Statics"; 
        }
    
        //这是开放给JS的API,需要用  @ReactMethod 进行标注;
        @ReactMethod
        public void onEvent(String clickName,String clickContent){
                   Toast.makeText(getCurrentActivity(),
                   clickName+","+clickContent,Toast.LENGTH_SHORT).show();
        }
    }
    
    

    第二步、实现ReactPackage接口

    在实现的接口中需要添加Module模块

    
    public class XNReactPackage implements ReactPackage {
        @Override
        public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
            List<NativeModule> modules = new ArrayList<>();
            modules.add(new Statics(reactContext));//添加实现的Statics接口实例;
            return modules;
        }
    
        @Override
        public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
            return Collections.emptyList();
        }
    }
    
    

    第三步、JS导出Java实现的Module接口

    在工程目录下新建Statics.js文件内容如下

    'use strict';
    import { NativeModules } from 'react-native';
    //export default NativeModules.Statics; 等同于下面代码
    module.exports = NativeModules.Statics;
    
    

    第四步、使用自定义的Module接口

    比如在Welcome.js中引用Statics.js

    import Statics from '../modlue/Statics';
        ... ...
        onButtonClicked() {
            Statics.onEvent("button","返回");
        }
    
    
    image.png

    相关文章

      网友评论

          本文标题:ReactNative与原生之间的接口交互

          本文链接:https://www.haomeiwen.com/subject/jorovxtx.html