mirror of
https://github.com/status-im/react-native-webview-bridge.git
synced 2026-09-01 13:51:09 +00:00
64 lines
1.3 KiB
JavaScript
64 lines
1.3 KiB
JavaScript
'use strict';
|
|
|
|
var React = require('react-native');
|
|
|
|
var {
|
|
WebView,
|
|
Component,
|
|
NativeModules: {
|
|
WebViewManager
|
|
}
|
|
} = React;
|
|
|
|
var WEB_VIEW_BRIDGE_REF = 'WEBVIEW_BRIDGE';
|
|
|
|
class WebViewBridge extends Component {
|
|
constructor(props) {
|
|
super(props);
|
|
}
|
|
|
|
onMessage(cb) {
|
|
var ref = this.refs[WEB_VIEW_BRIDGE_REF];
|
|
WebViewManager.onMessage(ref.getWebWiewHandle(), cb);
|
|
}
|
|
|
|
evalScript(value) {
|
|
var ref = this.refs[WEB_VIEW_BRIDGE_REF];
|
|
WebViewManager.eval(ref.getWebWiewHandle(), value);
|
|
}
|
|
|
|
send(message) {
|
|
var ref = this.refs[WEB_VIEW_BRIDGE_REF];
|
|
|
|
if (typeof message !== 'string') {
|
|
message = JSON.stringify(message);
|
|
}
|
|
|
|
WebViewManager.send(ref.getWebWiewHandle(), message);
|
|
}
|
|
|
|
componentDidMount() {
|
|
//setup the internal variables of webview bridge
|
|
var ref = this.refs[WEB_VIEW_BRIDGE_REF];
|
|
WebViewManager.bridgeSetup(ref.getWebWiewHandle());
|
|
|
|
//inject script into webView
|
|
WebViewManager.injectBridgeScript(ref.getWebWiewHandle());
|
|
}
|
|
|
|
componentWillUnmount() {
|
|
var ref = this.refs[WEB_VIEW_BRIDGE_REF];
|
|
WebViewManager.callbackCleanup(ref.getWebWiewHandle());
|
|
}
|
|
|
|
render() {
|
|
return (
|
|
<WebView
|
|
ref={WEB_VIEW_BRIDGE_REF}
|
|
{...this.props}/>
|
|
);
|
|
}
|
|
}
|
|
|
|
module.exports = WebViewBridge;
|