はい内のJSにブリッジオブジェクトを公開します。
本質的には、WebView
からReact Nativeにメッセージを送信しています。それで、あなたはそれらを使いたいことができます。これらのメッセージは単純な文字列ですが、JSON.stringify
でより複雑なデータを送信できます。
const injectScript = `
(function() {
if (WebViewBridge) {
WebViewBridge.onMessage = function (message) {
if (message === 'native.didSomething') {
// Domething was done inside of React Native.
console.log('native.didSomething');
}
};
WebViewBridge.send('native.doSomething');
}
}());
`;
class Example extends Component {
doSomething() {
// Do something inside of React Native.
this.refs.webviewbridge.sendToBridge('native.didSomething');
}
onBridgeMessage(message) {
const {webviewbridge} = this.refs;
if (message === 'native.doSomething') {
this.doSomething();
}
}
render() {
return (
<WebViewBridge
ref="webviewbridge"
onBridgeMessage={this.onBridgeMessage.bind(this)}
injectedJavaScript={injectScript}
source={{uri: "http://google.com"}}
/>
);
}
}
ReactをCordova(以前はPhoneGapと呼ばれていた)の中で実行しようとすることができました。 –
ええ、しかし、私はネイティブに反応することができませんでしたか? – Seppo420
私たちはあなたが望むことを、私たちの会社でやっています。私たちはwebviewとRNのコードベースが異なります。 React Nativeは、Webビュー間のすべてのナビゲーションを行っています。 –