成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

React Native使用百度Echarts顯示圖表

Lucky_Boy / 3103人閱讀

摘要:今天我就來介紹下在中如何使用來顯示各種圖表。首先需要在我們的項目中安裝組件,該組件是兼容和安卓雙平臺的。組件主要有三個屬性圖表的相關(guān)配置和數(shù)據(jù)。圖表的高度,默認(rèn)值是。解決方法將中的代碼修改為同時將文件拷貝到安卓項目下面的文件夾中。

本文原創(chuàng)首發(fā)于公眾號:ReactNative開發(fā)圈

Echarts是百度推出的免費開源的圖表組件,功能豐富,涵蓋各行業(yè)圖表。相信很多同學(xué)在網(wǎng)頁端都使用過。今天我就來介紹下在React Native中如何使用Echarts來顯示各種圖表。

首先需要在我們的React Native項目中安裝native-echarts組件,該組件是兼容IOS和安卓雙平臺的。

安裝

npm install native-echarts --save

安裝完成后在node_modules文件夾下會多出一個文件夾叫native-echarts。
目錄結(jié)構(gòu)如下圖所示:

基礎(chǔ)使用

native-echarts的使用方法基本和網(wǎng)頁端的Echarts使用方法一致。組件主要有三個屬性:

option (object):圖表的相關(guān)配置和數(shù)據(jù)。詳見文檔:ECharts Documentation

width (number):圖表的寬度,默認(rèn)值是外部容器的寬度。

height (number) :圖表的高度,默認(rèn)值是400。

示例代碼:
import React, { Component } from "react";
import {
  AppRegistry,
  StyleSheet,
  Text,
  View
} from "react-native";
import Echarts from "native-echarts";

export default class app extends Component {
  render() {
    const option = {
      title: {
          text: "ECharts demo"
      },
      tooltip: {},
      legend: {
          data:["銷量"]
      },
      xAxis: {
          data: ["襯衫","羊毛衫","雪紡衫","褲子","高跟鞋","襪子"]
      },
      yAxis: {},
      series: [{
          name: "銷量",
          type: "bar",
          data: [5, 20, 36, 10, 10, 20]
      }]
    };
    return (
      
    );
  }
}

AppRegistry.registerComponent("app", () => app);

通過上面的代碼我們就可以在React Native里面顯示一個圖表了。但是我們會發(fā)現(xiàn)顯示的字體會偏小。我們需要適配下移動端的字體,我們需要在native-echarts文件下找到tpl.html文件,在head里面增加下面一句代碼:

這樣字體大小就顯示正常了。

進階使用:

在使用圖表時,如果我們需要使用圖表的點擊事件,比如點擊柱狀圖的某個柱子,獲取到該柱子的信息,再跳轉(zhuǎn)到詳情頁面,這該怎么做呢?組件本身是沒有這個屬性的,需要我們自己修改下代碼,傳遞下消息。具體代碼如下:

首先我們需要在renderChart.js文件中把需要的數(shù)據(jù)注入并傳遞出來(window.postMessage):

import echarts from "./echarts.min";
import toString from "../../util/toString";

export default function renderChart(props) {
  const height = props.height || 400;
  const width = props.width || 568;
  return `
    document.getElementById("main").style.height = "${height}px";
    document.getElementById("main").style.width = "${width}px";
    var myChart = echarts.init(document.getElementById("main"));
    myChart.setOption(${toString(props.option)});
    myChart.on("click", function (params) {
      var  message = {};
      message.event="click";
      message.seriesName = params.seriesName;
      message.name = params.name;
      window.postMessage(JSON.stringify(message));
 });
  `
}

然后在index.js中做處理(handleMessage):

import React, { Component } from "react";
import { WebView, View, StyleSheet, Platform } from "react-native";
import renderChart from "./renderChart";
import echarts from "./echarts.min";

export default class App extends Component {
  componentWillReceiveProps(nextProps) {
    if(JSON.stringify(nextProps.option) !== JSON.stringify(this.props.option)) {
      this.refs.chart.reload();
    }
  }
  handleMessage = (evt) => {
    const message = JSON.parse(evt.nativeEvent.data)
     this.props.handleMessage(message);
  }
  render() {
    return (
      
        
      
    );
  }
}

最后在使用圖表的頁面中,修改下代碼來接受傳遞過來的消息:

在handleMessage方法中就可以寫自己的邏輯來處理傳遞過來數(shù)據(jù)了。

打包:

如果就這樣打包的話,IOS是可以正常打包并顯示的。但是在android端打包時會出錯。

解決方法:

將index.js中的代碼:source={require("./tpl.html")}修改為:
source= {Platform.OS === "ios" ? require("./tpl.html") : { uri: "file:///android_asset/tpl.html" }}

同時將tpl.html文件拷貝到安卓項目下面的app/src/main/assets文件夾中。

在執(zhí)行完react-native bundle命令后,需要手動將資源文件res/drawable-mdpi中生成的tpl.html文件刪除,再執(zhí)行cd android && ./gradlew assembleRelease命令,這樣就能成功打包了。

舉手之勞關(guān)注我的微信公眾號:ReactNative開發(fā)圈

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/89527.html

相關(guān)文章

  • 11個React Native 組件庫和 Javascript 數(shù)據(jù)可視化庫

    摘要:數(shù)據(jù)可視化庫超過的的可能是最流行和最廣泛的數(shù)據(jù)可視化庫。是一組組件,用于高效地渲染大型列表和表格數(shù)據(jù)。一種優(yōu)雅而靈活的方式,可以利用組件來支持實際的數(shù)據(jù)可視化。 想閱讀更多優(yōu)質(zhì)文章請猛戳GitHub博客,一年百來篇優(yōu)質(zhì)文章等著你! React Native 組件庫 1. NativeBase showImg(https://segmentfault.com/img/bVbrLHH?w=...

    tangr206 評論0 收藏0
  • 響應(yīng)式 React Native Echarts 組件

    摘要:額外的三個參數(shù)賦給的參數(shù)對象,發(fā)生變化后內(nèi)部會自動調(diào)用,實現(xiàn)響應(yīng)式刷新。利用,實現(xiàn)了通知執(zhí)行在中,可利用實現(xiàn)的事件向組件的通信。 一種在 React Native 中封裝的響應(yīng)式 Echarts 組件,使用與示例請參見:react-native-echarts-demo 近年來,隨著移動端對數(shù)據(jù)可視化的要求越來越高,類似 MPAndroidChart 這樣的傳統(tǒng)圖表庫已經(jīng)不能滿足產(chǎn)品...

    plokmju88 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<