react.js - React里用echarts时候,init对象如何选取?refs获取值undefined

查看:309
本文介绍了react.js - React里用echarts时候,init对象如何选取?refs获取值undefined的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

总共两个问题:
1.有React比较简单好用的Echarts推荐吗?主要运用就是二维折线。
2.现在导入的是"echarts": "^3.6.1".
考虑到会异步取数据,所以讲init方法写在了didMount后,然后想把init后的对象放到state中,方便以后再获取新数据,didUpdate时候setOption。

    componentDidMount() {
        let myChart = echarts.init(this.refs.alertRuleChart); //初始化echarts
        console.log(myChart);
        this.setState({
            charts:myChart
        })

    }
    componentDidUpdate(){
        console.log(this.state.charts); //undefined
        console.log(this.refs.xxxx); //undefined
        const  data  = chartOption; //外部传入的data数据
        let myChart = this.state.charts;
        myChart.setOption(data);
    }

通过refs来获得init对象,但是在console中打印this.refs.xxxx是undefined的,也考虑用id的方式,不过感觉不太好。
render中

<div ref="xxxx" style....></div>

不知道哪里出的问题,希望大家帮助......

解决方案

昨天研究了一下,发现是我项目的原因,推测是因为这个

<div ref="xxxx" style....></div>

是写在一个modal中的,默认是不显示的状态,也就是说这个div是undefined的。
所以写的方式是要通过componentDidUpdate下,显示看modal的visible为true的情况下,再获取div,这样就可以直接获取了。
因为这个modal是复用形式的,所以如果每次打开这个modal,你都init一次的话,虽说没有error,但是还是会报warning,提示这个dom已经有一个charts了,所以在componentDidUpdate时候,直接把init后的对象存到state中,这样每次都是操作这个charts,然后setOption就好了。

希望会对大家有帮助。

这篇关于react.js - React里用echarts时候,init对象如何选取?refs获取值undefined的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆