react中使用echarts,并實(shí)現(xiàn)tooltip循環(huán)輪播方式
react使用echarts,實(shí)現(xiàn)tooltip循環(huán)輪播
查看效果
當(dāng)我們開發(fā)數(shù)據(jù)看板類需求時(shí),需要圖標(biāo)實(shí)現(xiàn)自動(dòng)輪播的效果,
具體效果如下:
實(shí)現(xiàn)代碼
- 這里整個(gè)圖表為一個(gè)組件,通過傳data和配置入組件來顯示
- 按需加載echarts組件
- react生命鉤子中實(shí)現(xiàn)echarts的resize事件
- 當(dāng)傳入的props數(shù)據(jù)發(fā)生變化后需要重新渲染echarts
import React, { Component } from 'react' import { Empty } from 'antd' import echarts from 'echarts/lib/echarts' import 'echarts/lib/chart/line' import 'echarts/lib/component/tooltip' import 'echarts/lib/component/markLine' import 'echarts/lib/component/title' class LineBarShow extends Component { echartsObj = null loopTooltipTimer = null state = { xAxisData: [], seriesData: [] } componentDidMount () { window.addEventListener('resize', this.chartResize) } chartResize = () => { setTimeout(() => { this.echartsObj && this.echartsObj.resize() }, 100) } componentWillUnmount () { window.removeEventListener('resize', this.chartResize) this.loopTooltipTimer = null } // 當(dāng)props發(fā)生改變--start // 當(dāng)props發(fā)生變化后將值賦給當(dāng)前組件的state變量 static getDerivedStateFromProps (nextProps, prevState) { return { xAxisData: nextProps.data.xAxisData, seriesData: nextProps.data.seriesData } } loopShowTooltip = () => { let index = 0 this.loopTooltipTimer = setInterval(() => { this.echartsObj.dispatchAction({ type: 'showTip', seriesIndex: 0, dataIndex: index }) // 循環(huán)輪播 index = this.state.xAxisData.length - 1 ? 0 : ++index }, 1000) } componentDidUpdate () { let { xAxisData } = this.state if (xAxisData && xAxisData.length) { this.echartsObj = echarts.init(document.getElementById(this.props.id)) let option = {...} this.echartsObj.setOption(option) // 這里可以加判斷,是否需要循環(huán)輪播 // 這里默認(rèn)顯示 this.loopShowTooltip() } } // 當(dāng)props發(fā)生改變--end render () { let { xAxisData } = this.state return ( <div className="full-height"> { xAxisData && xAxisData.length ? ( <div id={this.props.id} className="full-height"></div> ) : ( <Empty /> )} </div> ) } }
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
React開發(fā)進(jìn)階redux saga使用原理詳解
這篇文章主要為大家介紹了React開發(fā)進(jìn)階redux saga使用原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11react中代碼塊輸出,代碼高亮顯示,帶行號(hào),能復(fù)制的問題
這篇文章主要介紹了react中代碼塊輸出,代碼高亮顯示,帶行號(hào),能復(fù)制的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09ReactJs實(shí)現(xiàn)樹形結(jié)構(gòu)的數(shù)據(jù)顯示的組件的示例
本篇文章主要介紹了ReactJs實(shí)現(xiàn)樹形結(jié)構(gòu)的數(shù)據(jù)顯示的組件的示例,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-08-08基于React實(shí)現(xiàn)虛擬滾動(dòng)的方案詳解
這篇文章將以固定高度和非固定高度兩種場(chǎng)景展開React中虛擬滾動(dòng)的實(shí)現(xiàn),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-03-03React Fragment 和空標(biāo)簽(<></>)用法及區(qū)別詳解
本文詳細(xì)介紹了React中的Fragment和空標(biāo)簽的使用,包括它們的區(qū)別、使用場(chǎng)景、性能考慮以及最佳實(shí)踐,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2025-01-01React使用TypeScript的最佳實(shí)踐和技巧
在React項(xiàng)目中使用TypeScript可以顯著提高代碼的可維護(hù)性和可讀性,并提供強(qiáng)大的類型檢查功能,減少運(yùn)行時(shí)錯(cuò)誤,以下是一些優(yōu)雅地將TypeScript集成到React項(xiàng)目中的最佳實(shí)踐和技巧,需要的朋友可以參考下2024-06-06react hook使用useState更新數(shù)組,無法更新問題及解決
這篇文章主要介紹了react hook使用useState更新數(shù)組,無法更新問題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03