From 78133f76f5b3ad6e548582ca3f60673c73f62001 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E9=BB=84?= Date: Wed, 3 Jan 2018 08:27:48 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=B8=80=E4=B8=AA=E4=B8=BB?= =?UTF-8?q?=E5=8A=A8=E5=88=B7=E6=96=B0option=E7=9A=84=E6=96=B9=E6=B3=95?= =?UTF-8?q?=EF=BC=8C=E7=95=8C=E9=9D=A2=E4=B8=8D=E4=BC=9A=E9=97=AA=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Echarts/index.js | 11 +++++++++++ src/components/Echarts/renderChart.js | 4 ++++ src/index.js | 7 ++++++- 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/components/Echarts/index.js b/src/components/Echarts/index.js index 6ce885f..c4e70a7 100644 --- a/src/components/Echarts/index.js +++ b/src/components/Echarts/index.js @@ -4,12 +4,23 @@ import renderChart from './renderChart'; import echarts from './echarts.min'; export default class App extends Component { + + constructor(props) { + super(props); + this.setNewOption = this.setNewOption.bind(this); + } + + componentWillReceiveProps(nextProps) { if(nextProps.option !== this.props.option) { this.refs.chart.reload(); } } + setNewOption(option) { + this.refs.chart.postMessage(JSON.stringify(option)); + } + render() { return ( diff --git a/src/components/Echarts/renderChart.js b/src/components/Echarts/renderChart.js index c63abc1..8592749 100644 --- a/src/components/Echarts/renderChart.js +++ b/src/components/Echarts/renderChart.js @@ -9,6 +9,10 @@ export default function renderChart(props) { document.getElementById('main').style.width = "${width}"; var myChart = echarts.init(document.getElementById('main')); myChart.setOption(${toString(props.option)}); + window.document.addEventListener('message', function(e) { + var option = JSON.parse(e.data); + myChart.setOption(option); + }); myChart.on('click', function(params) { var seen = []; var paramsString = JSON.stringify(params, function(key, val) { diff --git a/src/index.js b/src/index.js index 7e4f8ec..bc6a869 100644 --- a/src/index.js +++ b/src/index.js @@ -3,10 +3,15 @@ import { WebView, View } from 'react-native'; import { Container, Echarts } from './components' export default class App extends Component { + + setNewOption(option) { + this.chart.setNewOption(option); + } + render() { return ( - + this.chart = e}/> ); }