React native 我如何让React在Android中原生,并在Highcharts图表的工具提示中意识到点击事件?
我有一个用Expo构建的React本机应用程序。在上,我能够将URL传递给Highcharts,以便在单击工具提示时打开该URL:React native 我如何让React在Android中原生,并在Highcharts图表的工具提示中意识到点击事件?,react-native,highcharts,react-native-android,react-highcharts,React Native,Highcharts,React Native Android,React Highcharts,我有一个用Expo构建的React本机应用程序。在上,我能够将URL传递给Highcharts,以便在单击工具提示时打开该URL: return( <View style={styles.container}> <ChartView onMessage={m => this.onMessage(m)} config={config} /> </View> U
return(
<View style={styles.container}>
<ChartView
onMessage={m => this.onMessage(m)}
config={config}
/>
</View>
URL通过全局变量window.myURL
填充,并通过以下方式发送消息:
因为即使是console.log()
也不起作用,所以在我看来,click
事件似乎没有被Android捕获
我怎样才能让Android知道这个事件,这样我就可以浏览消息,然后打开URL?点击事件很好。问题在于,RN core针对Android的
实现在polyfillingwindow.postMessage()中存在缺陷。这一问题在本报告中得到了很好的讨论
因此,问题的本质似乎是RN必须多填充本机窗口。postMessage
出于某种原因,但覆盖没有及时发生,导致窗口。postMessage
仍对本机窗口进行调用
github问题中提出的一个解决方案(针对Android)就是停止使用本机窗口.postMessage
,直接使用内部接口,即实际的polyfill函数
// in place of `window.postMessage(data)`, use:
window.__REACT_WEB_VIEW_BRIDGE.postMessage(String(data))
不过值得注意的是,此API不是公开的,将来可能会发生更改。点击事件是正常的。问题在于,RN core针对Android的
实现在polyfillingwindow.postMessage()中存在缺陷。这一问题在本报告中得到了很好的讨论
因此,问题的本质似乎是RN必须多填充本机窗口。postMessage
出于某种原因,但覆盖没有及时发生,导致窗口。postMessage
仍对本机窗口进行调用
github问题中提出的一个解决方案(针对Android)就是停止使用本机窗口.postMessage
,直接使用内部接口,即实际的polyfill函数
// in place of `window.postMessage(data)`, use:
window.__REACT_WEB_VIEW_BRIDGE.postMessage(String(data))
不过值得注意的是,此API不是公开的,将来可能会更改。您能否将console.log更改为警报或dom更改,以确保console.log未被隐藏且不会触发单击事件?@basbase谢谢!我尝试了一个警报
,但也没有触发。你能为我们创建一个可构建的回购协议吗?特别是等待postMessage
修复,以及窗口。postMessage
修复,看起来都很有希望。你试过了吗?@hackapewindow.\uu反应\uu网络\uu浏览\uBridge.postMessage
成功了!!有两件事:1)如果我说if(Platform.OS=='ios'){window.postMessage(data);}否则{window.\u REACT\u WEB\u VIEW\u BRIDGE.postMessage(message\u data);}
它不起作用,但如果我只说window.postMessage(数据),它就行了代码>。我知道这是无关紧要的,但听起来很奇怪。2) 发布一个答案,以便我可以奖励赏金:)你能将console.log更改为警报或dom更改,以确保console.log不被隐藏并且单击事件不会触发吗?@basbase谢谢!我尝试了一个警报
,但也没有触发。你能为我们创建一个可构建的回购协议吗?特别是等待postMessage
修复,以及窗口。postMessage
修复,看起来都很有希望。你试过了吗?@hackapewindow.\uu反应\uu网络\uu浏览\uBridge.postMessage
成功了!!有两件事:1)如果我说if(Platform.OS=='ios'){window.postMessage(data);}否则{window.\u REACT\u WEB\u VIEW\u BRIDGE.postMessage(message\u data);}
它不起作用,但如果我只说window.postMessage(数据),它就行了代码>。我知道这是无关紧要的,但听起来很奇怪。2) 发布一个答案,以便我可以奖励赏金:)
plotOptions: {
series: {
point: {
events: {
click: function(e) {
setTimeout(function() {
console.log('bla');
window.postMessage(JSON.stringify({'url': window.myUrl}));
}, 200);
}
}
}
},
},
// in place of `window.postMessage(data)`, use:
window.__REACT_WEB_VIEW_BRIDGE.postMessage(String(data))