2017-09-04 75 views
1

當我點擊本地UI中的一個按鈕(可能來自一個片段容器)時,我想從JavaScript調用一個方法,讓我們把它稱爲'jsMethod'或其他。但是,我從來沒有處理過這種情況。如何在Android平臺上的react-native(0.47)中調用javascript方法?

我在網站上查找Facebook文檔中的一些相關代碼,但到目前爲止找不到問題的關鍵。任何人都給我一些建議?

+0

查看[將事件發送到JavaScript](https://facebook.github.io/react-native/docs/native-modules-android.html#sending-events-to-javascript)&[Events](https ://facebook.github.io/react-native/docs/native-components-android.html#events) – ufxmeng

回答

0

從Java調用JavaScript方法,做這樣的事情:

ReactInstanceManager reactInstanceManager = reactNativeHost.getReactInstanceManager(); 
ReactContext reactContext = reactInstanceManager.getCurrentReactContext(); 

CatalystInstance catalystInstance = reactContext.getCatalystInstance(); 
WritableNativeArray params = new WritableNativeArray(); 
params.pushString("Parameter 1"); 
params.pushString("Parameter 3"); 
catalystInstance.callFunction("JavaScriptVisibleToJava", "nameOfJsMethod", params); 

要調用JavaScript方法必須被定義,併爲Java可見:

import BatchedBridge from "react-native/Libraries/BatchedBridge/BatchedBridge"; 

export class ExposedToJava { 
    nameOfJsMethod(message) { 
    alert(message); 
    } 
} 

const exposedToJava = new ExposedToJava(); 
BatchedBridge.registerCallableModule("JavaScriptVisibleToJava", exposedToJava); 

This sample on Github包括工作演示。

相關問題