2017-01-07 7 views
0

JSのReactネイティブソースにネイティブに書かれたモジュール(Java、Android)をインポートしたいと思います。私は、モジュールやパッケージを持っている、いくつかのソースファイルの横にネイティブブリッジモジュールをネイティブのjavacriptにインポートする

android/app/src/main/java/com/rctcognito/android/app/libs/dependencies.jar 私は私のモジュールを作成しました:

は、私は私の依存関係がにロードされています。

モジュールは以下のクラス実装されています public class Cognito extends ReactContextBaseJavaModule

をそしてここで、パッケージのクラスです: import com.rctcognito.RCTCognitoPackage; そして、それを追加:

package com.rctcognito; 

import com.facebook.react.ReactPackage; 
import com.facebook.react.bridge.JavaScriptModule; 
import com.facebook.react.bridge.NativeModule; 
import com.facebook.react.bridge.ReactApplicationContext; 
import com.facebook.react.uimanager.ViewManager; 

import java.util.ArrayList; 
import java.util.Collections; 
import java.util.List; 

public class RCTCognitoPackage implements ReactPackage { 

    @Override 
    public List<Class<? extends JavaScriptModule>> createJSModules() { 
      return Collections.emptyList(); 
    } 

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

    @Override 
    public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) { 
      List<NativeModule> modules = new ArrayList<>(); 
      modules.add(new Cognito(reactContext)); 
      return modules; 
    } 
} 

私は、その後、新しいパッケージを追加することによって、MainApplication.javaを更新リスト内: new RCTCognitoPackage(),

公式のdocを考えるとリアクト - ネイティブを、私はこのようにそれをロードすることができるはずです。

import { NativeModules } from 'react-native'; 
module.exports = NativeModules.Cognito; 
import Cognito from './Cognito'; 

しかし、私のアプリは./Cognitoをロードすることができません。私が間違ってやっていることをどう思ってもらえますか? ありがとう!

答えて

1

これは動作しません。

すべてのネイティブモジュールは、React Nativeが提供するNativeModulesサブモジュールを介して公開されています。

これは正しい使い方です。

import { NativeModules } from 'react-native'; 

const { Cognito } = NativeModules; 

ネイティブコードベースで公開されている内容を確認するには、console.log(NativeModules)を参照してください。

+0

ありがとうございました!それは完璧に動作します! – Arkon

関連する問題