Closed Janmay closed 5 years ago
现在可以不使用实例的setOption方法了,可以直接用react的组件内state进行绑定,如果需要变更,直接setstate新的option即可。之前版本的secharts由于onload会触发闪烁,所以去掉,实例方法setOption由于组件内state变更后option不能保存,会被重置成state中的值,所以去掉。如果实在需要使用onload 可以安装1.5.0版本
@shifeng1993 我试过 setState options,但是因为是在 componentDidMount 中使用,往往 secharts 的 webview 还没有 onLoad,可能还没有添加上 renderChart 的 message event listener ,componentWillReceiveProps 已经接收到新数据并且 setOption 了,此时 setOption 是无效的。 我说的“onLoad”是指:
<WebView
ref="chart"
originWhitelist={['*']}
renderLoading={this.props.renderLoading || (() => <View style={{backgroundColor: this.props.backgroundColor}} />)} // 设置空View,修复ioswebview闪白
style={{backgroundColor: this.props.backgroundColor}} // 设置背景色透明,修复android闪白
scrollEnabled={false}
onMessage={this._handleMessage}
injectedJavaScript={renderChart(this.props)}
startInLoadingState={false}
source={source}
onLoad={this.props.onLoad}
/>
...
Echarts.propTypes = {
option: PropTypes.object,
backgroundColor: PropTypes.string,
width: PropTypes.number,
height: PropTypes.number,
renderLoading: PropTypes.func,
onPress: PropTypes.func,
onLoad: PropTypes.func
}
以便于webview loaded 后再处理数据。
我是说直接setState你的新状态。详情见文档内说明
由于 webview 还没有加载完成,在 componentDidMount 中使用 setOption 不会更新 chart。 可以加个 "onLoad"吗? @shifeng1993