WebViewコンポーネント内で関数を作成し、ネイティブ関数をトリガーすることは可能ですか?React Native - Webview呼び出しネイティブ関数に反応する
答えて
これは可能ですが、これを行う唯一の方法であるかどうかはわかりません。
基本的には、onNavigationStateChange
イベントハンドラを設定し、関数呼び出し情報をナビゲーションURLに埋め込むことができます。ここではその概念の例を示します。
では
render() {
return <WebView onNavigationStateChange={this._onURLChanged.bind(this)} />
}
_onURLChanged(e) {
// allow normal the natvigation
if(!e.url.startsWith('native://'))
return true
var payload = JSON.parse(e.url.replace('native://', ''))
switch(e.functionName) {
case 'toast' :
native_toast(e.data)
break
case 'camera' :
native_take_picture(e.data)
break
}
// return false to prevent webview navitate to the location of e.url
return false
}
はただのWebViewのナビゲーションイベントをトリガし、これを使用して、ネイティブメソッドを呼び出すには、ネイティブコンテキストを反応させ、URL内の関数呼び出し情報を埋め込みます。
window.location = 'native://' + JSON.stringify({
functionName : 'toast', data : 'show toast text'
})
はい、可能ですが、それはreact-native-webview-bridgeのパッケージに存在します。 私はそれを生産に多量に使用しました。
こんにちはSidali Hallakさん、ネイティブバージョンuを使用して反応しますか?私は0.30を使用しており、それをインストールしているからです。それはこの問題の原因ですhttps://github.com/alinz/react-native-webview-bridge/issues/137 – ChokYeeFan
私は0.25を使用していました、私は2ヶ月前にプロジェクトを終了しました –
あなたは、私はわからないが、私の意見はある負荷にWebViewのにJavaScript関数を注入した後、あなたはより多くの情報IN Here
を注入された機能からの応答を得るためのonMessageを使用することができます -
することができますない。 Webviewは、Webviewコンポーネントで定義できるjsパーツだけを読み込むことができます。これは他のコンポーネントとはまったく別物であり、可視領域にすぎません。
- 1. ネイティブWebViewエラー "_onLoadingStart"に反応します
- 2. 別の関数内のネイティブの問題を呼び出す関数に反応しますか?
- 3. React native JsコードからAndroidネイティブUIコンポーネントメソッドを呼び出す
- 4. Reactネイティブ、AwesomeProject、反応ネイティブrun-ios:** BUILD FAILED **
- 5. Javascriptアラートがアンドロイドで反応しない反応ネイティブwebview
- 6. インポートでネイティブ呼び出しコンポーネントに反応するjs
- 7. React Nativeの親コンポーネントから子関数を呼び出す
- 8. 異なる反応ファイルから関数を呼び出す
- 9. 反応しないネイティブhtml postMessageはWebViewに届きません
- 10. Aurelia jsで反応し、aurelia関数を呼び出します。
- 11. アンドロイドでバックグラウンドタスクをスケジュールし、反応からネイティブなjavascriptメソッドを呼び出す
- 12. AndroidでNativeに反応し、フェッチでAJAX呼び出しが失敗する
- 13. Reactネイティブのネイティブコンポーネント関数を呼び出す
- 14. emojisを反応ネイティブで表示できません#react-native
- 15. d3とwebViewでネイティブに反応する
- 16. 反応し、ネイティブ
- 17. 反応ネイティブ呼び出しonSubmit()を押すとreturnKeyType
- 18. ReactネイティブWebview get html
- 19. ネイティブ・デバッグに反応する
- 20. React Native Android Webview
- 21. 反応したネイティブのキャッシュイメージ
- 22. 変数として宣言された反応コンポーネントの呼び出し関数
- 23. Reactネイティブ変数を使用してメソッドを呼び出す
- 24. ネイティブに反応しました[オブジェクトオブジェクト]
- 25. 反応コンポーネントのメソッドを呼び出す方法(Amcharts-React)
- 26. React Nativeで数回押すまでボタンが反応しない
- 27. 反応ネイティブで反応ネイティブを実装する際にエラーが発生する
- 28. は、反応ネイティブ実行IOSのネイティブ、反応ネイティブのinit AwesomeProjectをREACT:エラー
- 29. React Native:フェッチapi呼び出しが不適切な応答を返す
- 30. ネイティブrun-iosランアンドロイドエントリーファイルに反応する
達成したいことは何ですか? Reactネイティブは、ネイティブのアンドロイドまたはios APIを使用して、Reactネイティブでアプリケーションを構築するのに力を入れている強力です。 WebViewを使用せずに達成するには、他にも良い方法がいくつかあります。 –
あなたの必要条件をより具体的にすることができます –