目前的RN项目需用到分享功能,于是在app中需要分享的页面写了webview,写是写完了,但是要如何传值呢?
目前遇到的需求是,在Webview中点击某个人的简介要调到对应的RN中的这个人的主页,相当于要传这个人的id到RN中。
在RN中某个需要用到Webview的页面,webview是相当于这个页面的一个组件:
app向webview中的网页传值:
1、在Webview组件里用到ref这个属性,取个名字:ref="webview"在该app页面使用this.refs.webView.postMessage(JSON.stringify("你要传的值"))发送信息到网页中,网页使用document.addEventListener('message', function(msg) {})来接收来自app的信息(信息都是字符串)
2、网页收到信息如下:
webview中的网页向app传值:
3、在app中的Webview组件中onMessage属性可以接受从网页端传来的参数,evente.nativeEvent.data就是传过来的参数。
网页中的代码(发送数据到app):
window.postMessage(JSON.stringify(obj));
app中代码(app中接收数据):
onMessage={(e) => { this._onMessage(e) }}
_onMessage = (e) => {
var res = JSON.parse(e.nativeEvent.data)
}