999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

React中Recharts圖表的應用與研究

2020-10-26 08:14:44柳海燕
無線互聯科技 2020年14期
關鍵詞:圖表嘗試可視化

柳海燕

(蘇州工業園區職業技術學院,江蘇 蘇州 215123)

0 引言

React是Facebook于2013年開源的用于構建用戶界面的框架,現在隨著React可以使用Node進行服務器渲染以及使用React Native開發原生移動應用功能的豐富,使得它現在成為Web開發的主流工具之一。

Recharts是2016年阿里巴巴前端團隊開發的一款可視化組件庫,用React進行設計,重新定義了組合與配置方式,官網為http://recharts.org。最初為了國際化發展官方只提供了英文文檔,所以,國內用戶數量增長相比國外慢很多。大部分同行還是使用百度的Echarts進行數據展示,崔蓬[1]在2019年探索了基于ECharts平臺的可視化開發方法。當然,針對不同的語言與開發環境,也有其他不同的數據可視化方法。比如,寇國釗等[2]在2019年介紹了基于Java技術的開源動態圖表開發組件JFreeChart。賈麗娟等[3]在2019年借助Python強大的數據處理和分析技術,將數據轉化為PyEcharts組件接口參數,實現由數據到可視化圖表的轉換。但由于大小、語言、顯示問題,上述都不是React框架的最佳選擇。

Recharts當前包含了中文、英文兩種文檔,在方便國際化的同時,也友好地滿足了本土化的需求。除了阿里指數、阿里數據兩個忠實用戶外,還有很多外國公司,如Fyndiq,Ahrefs等都在使用,相信隨著React用戶數量的增長,Recharts的應用前景也越來越廣闊。本文嘗試在React框架中引入Recharts進行數據可視化顯示。

1 Recharts安裝與使用

1.1 安裝

官方推薦使用npm的方式進行安裝,能更好地和CommonJS打包工具配合使用,命令為$ npm install recharts。

在實踐的過程中,npm更新會帶來版本問題。由于Yarn是Facebook發布的一款取代npm的管理工具,Rechats是基于React開發的,所以,筆者推薦可以嘗試用yarn安裝,安裝命令為 yarn add recharts。安裝成功后,會顯示Recharts的當前版本信息。

1.2 使用

首先,要選擇所需要的圖表類型,當前Recharts提供的圖表有AreaChart,BarChart,LineChart等11種類型,用戶可根據自己的應用需要進行選擇。其次,通過import添加所需要的組件。最后,根據組件屬性來使用組件進行顯示,甚至自定義組件,來實現定制化的功能。

2 React中使用Recharts定制化顯示數據時遇到的問題

2.1 Recharts中組件屬性使用

根據所開發應用的需要,采用Recharts中PieChart圖表類型來顯示數據。用到了PieChart的子組件Pie和Pie的子組件Cell,通過其fill屬性來傳遞數據項對應子節點的配置。通過Pie組件的data屬性來存放源數據,通過Pie組件的label屬性來展示圖形上的文本標簽。當然,所需組件事先需要通過import語句來引入。

2.2 用戶自定義Label

通過Pie組件的label屬性來展示圖形上的文本標簽,只不過,label的值寫成一個函數renderLabel,用該函數來渲染自定義的文本標簽。圖形顯示部分主要源代碼如下:

data={visitList}

dataKey="value"

nameKey="label"

cx={200}

cy={200}

labelLine={false}

label={this.renderLabel}

fill="#8884d8"

>

{visitList.map((entry, index) => )}

可以看到,此時,Pie的label屬性就是前面自定義的函數renderLabel,使得圖像按照需要進行內容顯示。

2.3 React路由

React通過路由庫React-Router,管理URL,實現組件的切換和狀態的變化。在本應用中,通過Route來指定路徑對應的組件,此統計顯示的代碼為 。當第一次單擊此路由對應的菜單時,圖表正常顯示,如圖1所示。

圖1 正常顯示的圖表

當單擊圖中其他菜單,比如,“訪問申請”“權限管理”后,再次單擊“申請統計”菜單時,Pie組件的label并不顯示,只有圖形,沒有圖形上的標注文字。因為圖表是按照份額計算了之后正常顯示的,只是沒有上面的標注。當嘗試刷新頁面時,數據又能正常顯示。

3 解決方案

3.1 解決思路

既然Recharts只是負責根據數據繪制圖形,且已經繪制完成,Recharts的label屬性在刷新之后也能夠顯示文本,沒有多余的屬性來改變這一切,那就從React的角度來嘗試解決這一問題。

3.2 方案一:forceRefresh的應用

既然每次強制刷新都可以使得數據正常顯示,那么可以在React的所有路由組件共用的底層接口組件Router上使用其forceRefresh屬性,因為Router是路由規則制定的最外層容器,所以,每次單擊菜單鏈接時,都會強制刷新,圖表每次可以正常顯示。

雖然解決了Recharts圖表顯示問題,但代價較大。其他所有路由都會受到強制刷新的牽連,所以,犧牲了應用程序執行效率。

3.3 方案二:key的應用

為了彌補方案一的不足,考慮不讓所有的路由強制更新,每次只有單擊 “申請統計”菜單所需路由的時候再強制刷新。這時,可以利用React中極其特殊的key屬性,雖然它不是給開發者用的,是給React自己使用的,但根據相同key的組件,React認為是同一個組件的特點,如果render顯示圖表時候,發現key不同了,那么每項都會重新銷毀然后重新創建,性能開銷要小很多。

于是,通過隨機函數隨機生成key的值,每次調用時key值不同,React就會重新渲染頁面,圖表確實可以正常顯示,且性能開銷比方案一小很多。

4 結語

本文闡述了筆者在通過React框架開發應用過程中使用Recharts的過程,遇到的問題以及解決方案,希望能夠為同樣想要在React中引用Recharts進行數據顯示的同行起到拋磚引玉的作用。

猜你喜歡
圖表嘗試可視化
基于CiteSpace的足三里穴研究可視化分析
基于Power BI的油田注水運行動態分析與可視化展示
云南化工(2021年8期)2021-12-21 06:37:54
基于CGAL和OpenGL的海底地形三維可視化
再試試看
一次驚險的嘗試
學生天地(2019年29期)2019-08-25 08:52:26
“融評”:黨媒評論的可視化創新
傳媒評論(2019年4期)2019-07-13 05:49:14
嘗試
小主人報(2018年11期)2018-06-26 08:52:18
一次讓我受益的嘗試
北極光(2018年12期)2018-03-07 01:01:58
雙周圖表
足球周刊(2016年14期)2016-11-02 10:54:56
雙周圖表
足球周刊(2016年15期)2016-11-02 10:54:16
主站蜘蛛池模板: 自拍中文字幕| 99热线精品大全在线观看| 久久国产精品娇妻素人| 国产一级毛片网站| 亚洲一区二区日韩欧美gif| 午夜免费视频网站| 亚洲精品天堂自在久久77| 伊人天堂网| 国产一区二区三区精品久久呦| 无码内射在线| 国产麻豆精品久久一二三| 国产欧美专区在线观看| 久操线在视频在线观看| 成人毛片免费在线观看| 欧美亚洲中文精品三区| 国产精品欧美在线观看| 极品私人尤物在线精品首页 | 国产欧美精品午夜在线播放| 国产在线观看精品| 无码精油按摩潮喷在线播放 | 国产精品视频系列专区| 免费一级毛片不卡在线播放| 国产一级毛片网站| 免费人欧美成又黄又爽的视频| 亚洲国产成人自拍| 亚洲日韩Av中文字幕无码| 国产精品女主播| 无码电影在线观看| 亚欧美国产综合| 亚洲欧美日本国产综合在线| 无码乱人伦一区二区亚洲一| 亚洲一道AV无码午夜福利| 亚洲熟女偷拍| 一级毛片基地| 日本免费福利视频| 日本欧美在线观看| aa级毛片毛片免费观看久| 综合人妻久久一区二区精品| 久久综合九色综合97婷婷| 国产91透明丝袜美腿在线| 伊人丁香五月天久久综合 | 国产91丝袜| 国产精品视频白浆免费视频| 亚洲全网成人资源在线观看| 亚洲aaa视频| 精品福利国产| 丁香五月激情图片| 日韩在线欧美在线| 亚洲欧美不卡中文字幕| 免费在线一区| 亚洲天堂日韩在线| 天天色天天综合网| 亚洲第一综合天堂另类专| 国产香蕉在线视频| 又粗又硬又大又爽免费视频播放| 中文字幕啪啪| 亚洲精品国产成人7777| 国产精品主播| 素人激情视频福利| 欧美激情视频一区二区三区免费| 浮力影院国产第一页| 国产精品人莉莉成在线播放| 国产AV无码专区亚洲精品网站| 欧美、日韩、国产综合一区| 天天躁夜夜躁狠狠躁躁88| 国产清纯在线一区二区WWW| 超薄丝袜足j国产在线视频| 久久情精品国产品免费| 午夜三级在线| 99久久精彩视频| 国产精品欧美激情| 久久婷婷综合色一区二区| 日本欧美视频在线观看| 中文字幕在线播放不卡| 日本欧美视频在线观看| 国产又大又粗又猛又爽的视频| 波多野一区| 日韩精品免费一线在线观看| 成人无码区免费视频网站蜜臀| 91无码视频在线观看| 日韩精品一区二区三区中文无码| 成年人久久黄色网站|