- 我在 React Native 中使用 Highcharts
-
对于条形图,我定义了以下单击事件:
plotOptions: {
series: {
cursor: 'pointer',
point: {
events: {
click: () => {
alert("Clicked!");
}
}
}
}
}
我想在单击事件上 setState 以便能够显示单击栏的元素,但我什至无法在其上使用 console.log() 。
- 我检查了示例,我看到的只是回调函数内的“警报”。
有任何想法吗?
Thanks!
现在正在工作!问题如下(据我了解):
- Highcharts for React Native 在 WebView 中呈现图表。因此只能发出警报。
- 如果您尝试直接 console.log (或调用方法或其他任何内容),它将无法工作,因为它没有进入 React Native,而是在 web 视图中。
- 那么问题来了:如何将数据从 webview 传递到 React Native?答案是... window.postMessage()
像这样:
-
在配置对象中(传递给图表):
plotOptions: {
series: {
point: {
events: {
click: function() {
window.postMessage( //data you want to send to react native )
}
}
}
}
}
-
将 onMessage 方法作为 prop 传递给 ChartView,就像将其传递给 WebView (https://facebook.github.io/react-native/docs/webview#onmessage https://facebook.github.io/react-native/docs/webview#onmessage)
<ChartView style={{ height: 300 }} config={conf} onMessage={m => onMessage(m)} options={options}></ChartView>
-
现在您可以 console.log、setState 或在您的 React Native onMessage 函数中执行任何操作
onMessage = (m) => {
console.log(m.nativeEvent.data)
}
就是这样,现在我可以单击一个栏并更改组件的状态;)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)