首頁  >  文章  >  web前端  >  響應式React Native Echarts元件的介紹

響應式React Native Echarts元件的介紹

不言
不言原創
2018-07-14 11:17:562107瀏覽

這篇文章主要介紹了關於響應式React Native Echarts組件的介紹,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

近年來,隨著移動端對資料視覺化的要求越來越高,類似MPAndroidChart 這樣的傳統圖表庫已經無法滿足產品經理日益變態的需求。前端領域資料視覺化的發展相對繁榮一些,透過 WebView 在行動端使用 Echarts 這樣功能強大的前端資料視覺化函式庫,是解決問題的好方法。

React Native 開發中,由於使用的是與前端相同的 JavaScript 語言,銜接 Echarts 的工作相對順暢些,不過一些必要的元件封裝還是能夠大大提高開發效率的。

Echarts 官方推薦過一個第三方封裝庫:react-native-echarts(註:它對應的nmp package 名字為native-echarts  ),目前有400 stars 和100 的周下載量,可見還是被廣泛使用的。但我們經過研究,發現react-native-echarts 有以下一些問題:

  • 該庫已半年多未更新,Echarts 版本停留在3.0 ,Android 端打包需手動新增assets 的問題也一直未處理

  • 庫的介面靈活度較低,例如只能透過width、height 設定大小;無法使用Echarts 擴充包;無法進行事件註冊、WebView 通訊等

由於用WebView 封裝Echarts 涉及到本地html,不是純JavaScript 語言層面的功能,又沒有native 程式碼,所以做成nmp package 並不是一個很好的選擇,寫成專案裡的內部組件,自己進行配置反而是更方便、更靈活的方案。

因此我們決定不使用第三方的 Echarts 封裝庫,自己寫一個通用元件 WebChart 。為方便開發中使用,此元件具有以下特點:

  • 按照響應式進行設計,只需在option 中配置好資料來源,資料變更後圖表就會自動刷新,更符合React 的風格。

    我們的方案是在元件每次 update 時判斷傳入的 option 參數是否發生變化,如果變化通過 webView.postMessage ,以 JSON 的形式傳入新的 option ,通知 Echarts 重新 setOption 。

    雖然Echarts 本身會對option 進行對比,但事先判斷可以減少update 導致的與WebView 頻繁通信,這一點在容器父組件中有大量非同步請求時還是很明顯的;在WebView 內部,更新則是採用Echarts 本身的setOption 而無需reload 整個WebView

  • #利用WebView 的postMessage 和onMessage 接口,可實現圖表與其它React Native 組件的事件通信

  • 透過元件的exScript 參數,可為WebView 新增任意腳本,使用靈活

  • 由於是自己寫的元件,echarts 版本、擴充包,svg/canvas 、數據增量載入都可以自己設定

Demo 與使用方法

使用與範例請參考:react-native-echarts-demo,如果你需要直接使用,可依下列步驟移植:

  1. 將根目錄下的WebChart 元件資料夾拷到你專案中適當的地方

  2. ##將/android /app/src/main/assets/web 資料夾拷到你專案同樣位置,沒有assets 資料夾需要手動建立。

只需以上兩步驟就可以在專案中使用 WebChart 元件了。

如果需要進一步自訂的話,Echarts 程式碼在以上兩個資料夾中的index.html 裡