動手建立一個本身的「React native」原生模塊

前言

咱們在使用RN的時候,會發現RN提供了不少Module供JS調用,這些Module可以知足咱們一些基礎的應用場景,可是在實際的項目中,一定會有一些交互邏輯須要咱們本身去實現,這時候就須要咱們自定義一些Module供JS調用,那麼怎麼才能讓JS調用到咱們自定義的Module呢? 下面咱們就一步步的去實現JS對自定義Module的調用。java

實現方法

一、在原生端建立ReactUiModule類:

public class ReactUiModule extends ReactContextBaseJavaModule {

    public ReactUiModule(ReactApplicationContext reactContext) {
        super(reactContext);
    }

    @Override
    public String getName() {
        return "ReactUiModule";
    }

    //toast
    @ReactMethod
    public void showToast(String msg) {
        Toast.makeText(getReactApplicationContext(), msg, Toast.LENGTH_LONG);
    }

}
複製代碼

二、建立ReactPackage類並在該類中添加咱們自定義的Module:

public class MyReactPackage implements ReactPackage {

    @Override
    public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
        List<NativeModule> nativeModules = new ArrayList<>();
        /*在這裏加入開發的接口*/
        nativeModules.add(new ReactUiModule(reactContext));
        return nativeModules;
    }

    @Override
    public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
        return Collections.emptyList();
    }
}
複製代碼

三、修改ReactNativeHost類的getPackages方法,將MyReactPackage添加到package列表。

public class MainApplication extends Application implements ReactApplication {

    private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
        @Override
        public boolean getUseDeveloperSupport() {
            return BuildConfig.DEBUG;
        }

        @Override
        protected List<ReactPackage> getPackages() {
            return Arrays.<ReactPackage>asList(
                    new MainReactPackage(),
                    new MyReactPackage()
            );
        }

        @Override
        protected String getJSMainModuleName() {
            return "index";
        }
    };

    @Override
    public ReactNativeHost getReactNativeHost() {
        return mReactNativeHost;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        SoLoader.init(this, /* native exopackage */ false);
    }
}
複製代碼

原生端準備完畢,接下來看一下JS怎麼使用咱們定義的這個module

import React, {Component} from 'react';
import {Platform, StyleSheet, NativeModules, Text, View} from 'react-native';
RCTDemoToast = NativeModules.ReactUiModule;   // 獲取到Native Module

type Props = {};
export default class App extends Component<Props> {
  render() {
    RCTDemoToast.showToast('ReactNative');
    console.log('ReactNative','js first page render');
    return (
      <View style={styles.container}> <Text style={styles.welcome}>Welcome to React Native!</Text> <Text style={styles.instructions}>To get started, edit App.js</Text> </View>
    );
  }
}
複製代碼

調用效果圖

到此咱們就實現了JS調用咱們自定義Module的全部工做,例子比較簡單你們能夠本身根據上述步驟一步步操做,相信在建立的過程當中會有本身的體會和收穫。其間有什麼建議或疑問歡迎和咱們互動交流

原文連接: tech.meicai.cn/detail/72, 也可微信搜索小程序「美菜產品技術團隊」,乾貨滿滿且每週更新,想學習技術的你不要錯過哦。react

相關文章
相關標籤/搜索