Files
react-native-webview-bridge/example/Sample2/WebViewBridge.js
T

71 lines
1.4 KiB
JavaScript
Raw Normal View History

'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);
}
2015-07-14 13:53:03 -04:00
onMessage(cb) {
var ref = this.refs[WEB_VIEW_BRIDGE_REF];
WebViewManager.onMessage(ref.getWebWiewHandle(), (messages) => {
messages.forEach((message) => {
cb(message);
});
//re register the callback again
this.onMessage(cb);
});
2015-07-14 13:53:03 -04:00
}
evalScript(value) {
var ref = this.refs[WEB_VIEW_BRIDGE_REF];
WebViewManager.eval(ref.getWebWiewHandle(), value);
}
2015-07-14 13:53:03 -04:00
send(message) {
var ref = this.refs[WEB_VIEW_BRIDGE_REF];
if (typeof message !== 'string') {
message = JSON.stringify(message);
}
WebViewManager.send(ref.getWebWiewHandle(), message);
}
2015-07-14 12:22:25 -04:00
componentDidMount() {
//setup the internal variables of webview bridge
2015-07-13 16:09:24 -04:00
var ref = this.refs[WEB_VIEW_BRIDGE_REF];
2015-07-14 12:22:25 -04:00
WebViewManager.bridgeSetup(ref.getWebWiewHandle());
//inject script into webView
2015-07-13 16:09:24 -04:00
WebViewManager.injectBridgeScript(ref.getWebWiewHandle());
}
2015-07-14 12:22:25 -04:00
componentWillUnmount() {
var ref = this.refs[WEB_VIEW_BRIDGE_REF];
2015-07-14 13:53:03 -04:00
WebViewManager.callbackCleanup(ref.getWebWiewHandle());
2015-07-14 12:22:25 -04:00
}
render() {
return (
<WebView
ref={WEB_VIEW_BRIDGE_REF}
{...this.props}/>
);
}
}
module.exports = WebViewBridge;