在React 組件中使用Echarts的示例代碼
在完成一個(gè)需求的時(shí)候碰到一個(gè)場(chǎng)景需要使用柱狀圖。涉及到可視化,第一反應(yīng)當(dāng)然是Echarts了。平時(shí)用js加載Echarts組件很方便,但是在React中就要費(fèi)下神了。各種連蒙帶猜實(shí)現(xiàn)了。edmo里的
這里我們要在自己搭建的react項(xiàng)目中使用ECharts,我們可以在ECharts官網(wǎng)上看到有一種方式是在 webpack 中使用 ECharts,我們需要的就是這種方法。
我們?cè)谑褂肊Charts之前要先安裝ECharts,在以往的開發(fā)模式中,我們很多使用就是把官網(wǎng)中的ECharts的核心js文件導(dǎo)入到我們的html或者是jsp等文件里面,但是在react項(xiàng)目中,我們可以直接使用node.js的npm命令安裝:
npm install echarts --save
Echarts的例子就是Echarts文檔上介紹的最簡(jiǎn)單的應(yīng)用。
render:function() { var info = 1; return ( <div className="mt15 xui-financialAnalyse-page"> <div className="xui-general"> <Chart data={info} data-info={info} /> </div> </div> ) }
這是調(diào)用Echarts組件的地方,給里面?zhèn)髁?個(gè)屬性(data-開頭是H5定義的規(guī)范)
var Chart = React.createClass({ getInitialState: function() { this.token = Store.addListener(this.onChangeData); return {} }, componentWillMount: function() { var info = this.props.data; //HTML5規(guī)定自定義屬性要以data-開頭,這樣的可以如下取 console.log(this.props['data-info']) Action.getInfo(info); }, componentDidUpdate: function() { this.showChart(this.state.data) }, onChangeData: function() { var data = Store.getData(); this.setState({ data: data['info']['data'] //后臺(tái)返回的數(shù)據(jù) }); }, showChart: function(dataSet){ var myChart = echarts.init(document.getElementById('main')); var option = { title: { text: 'ECharts 入門示例' }, color: ['#3398DB'], tooltip : { trigger: 'axis', axisPointer : { type : 'shadow' } }, grid: { left: '3%', right: '4%', bottom: '3%', containLabel: true }, xAxis : [ { type : 'category', data : ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'], axisTick: { alignWithLabel: true } } ], yAxis : [ { type : 'value' } ], series : [ { name:'你好', type:'bar', barWidth: '60%', data: dataSet } ] }; myChart.setOption(option); }, render: function() { return ( <div id="main" style={{width: 500, height:500}}></div> ) } });
上面是完整的demo Echarts組件的代碼,主要是利用了React根據(jù)不同狀態(tài)(3種狀態(tài))提供的處理函數(shù)(一共有5種)。
1、componentWillMount:在插入真實(shí)DOM之前發(fā)起Action,向后端請(qǐng)求數(shù)據(jù)。
2、onChangeStore:在數(shù)據(jù)變更的時(shí)候更新數(shù)據(jù),并在getInitialState中加入監(jiān)聽Store中數(shù)據(jù)變化的監(jiān)聽器。
3、componentDidUpdate:在數(shù)據(jù)被重新渲染之后,觸發(fā)showChart()方法繪制canvas。
4、showChart:配置Echarts,具體配置信息可以參考Echarts文檔
5、如果組件生命周期結(jié)束,那么要加上如下代碼:
componentWillUnmount: function() { this.token.remove(); },
否則會(huì)報(bào)錯(cuò): Warning: setState(...): Can only update a mounted or mounting component. This usually means you called setState() on an unmounted component. This is a no-op. Please check the code for the undefined component.
最后附上效果圖:
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
ReactJS實(shí)現(xiàn)表單的單選多選和反選的示例
本篇文章主要介紹了ReactJS實(shí)現(xiàn)表單的單選多選和反選的示例,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-10-10最新版React?Native環(huán)境搭建(親測(cè))
這篇文章主要介紹了最新版React?Native環(huán)境搭建,React Native的運(yùn)行需要依賴原生Android和iOS環(huán)境,因此需要分別安裝原生Android和iOS的開發(fā)環(huán)境,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08React styled components樣式組件化使用流程
styled-components 是react的一個(gè)第三方庫(kù),一種css私有化的方式。用來(lái)實(shí)現(xiàn)CSS in JS 的方式之一。在多人協(xié)作中,css必定會(huì)出現(xiàn)命名沖突,與vue的scoped解決方案不同,react用styled-components的給類名加了隨機(jī)字符的方式實(shí)現(xiàn)了css的私有化2023-02-02react-redux多個(gè)組件數(shù)據(jù)共享的方法
這篇文章主要介紹了react-redux多個(gè)組件數(shù)據(jù)共享的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-08-08react+antd4實(shí)現(xiàn)優(yōu)化大批量接口請(qǐng)求
這篇文章主要為大家詳細(xì)介紹了如何使用react hooks + antd4實(shí)現(xiàn)大批量接口請(qǐng)求的前端優(yōu)化,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下2024-02-02