native react 折线图_react native中使用echarts

本文介绍了如何在React Native项目中使用native-echarts库来展示折线图,特别是在Android平台上。针对在debug模式下图表正常显示,但打包成apk后图表不显示的问题,提供了解决方案,包括将tpl.html文件复制到指定目录以及修改index.js文件。此外,还讨论了由于未来Webview组件将从React Native核心移除,可能对native-echarts使用的影响,并给出了相关资源链接和建议。
摘要由CSDN通过智能技术生成

开发平台:mac pro

node版本:v8.11.2

npm版本:6.4.1

react-native版本:0.57.8

native-echarts版本:^0.5.0

目标平台:android端收银机,android7.0+

最近在使用react native进行app的开发工作,rn开发的内容会与原生app混合,在一些使用场景下遇到了一些问题

使用场景:每日收益与每月收益的折线图统计

在pc/h5端的开发工作中,图标类的开发使用echarts/f2等三方工具都是比较常见的了,在react native中,没有了DOM的概念,因此在react native中使用了一些三方的图标库

native-echarts,github地址。

需要更换echarts版本的方法

native-echarts内部使用了react native中的webview进行图表的展示,本质上只是传入数据,通过echarts渲染出静态的HTML文档,然后通过webview展示出来而已。

netive-echarts内部使用的echarts版本为v3.2.3"版本,如果需要更高级的echarts版本,只需要更换echarts.min.js文件以及tpl.html文件里的内容即可。

使用时遇到的问题:在debug模式下,真机以及测试机器上图标正常显示,打包成android的apk文件后图表都不显示

解决方式:

1:找到native-echarts/src/components/Echarts/tpl.html文件,复制到android/app/src/main/assets这个目录下面,如果文件夹不存在就新建一个即可。

2:找到文件native-echarts/src/components/Echarts/index.js,修改为一下内容

import React, { Component } from 'react';

import { WebView, View, StyleSheet, Platform } from'react-native';

import renderChart from'./renderChart';

import echarts from'./echarts.min';

exportdefaultclass App extends Component {

constructor(props) {

super(props);

}//预防过渡渲染

shouldComponentUpdate(nextProps, nextState) {

const thisProps= this.props ||{}

nextProps= nextProps ||{}if (Object.keys(thisProps).length !==Object.keys(nextProps).length) {return true}for (const key innextProps) {if (JSON.stringify(thisProps[key]) !=JSON.stringify(nextProps[key])) {//console.log('props', key, thisProps[key], nextProps[key])

return true}

}return false}

componentWillReceiveProps(nextProps) {if (nextProps.option !== this.props.option) {//解决数据改变时页面闪烁的问题

this.refs.chart.injectJavaScript(renderChart(nextProps))

}

}

render() {return(

ref="chart"scrollEnabled= {false}

injectedJavaScript= {renderChart(this.props)}

style={{

height:this.props.height || 400,

backgroundColor:this.props.backgroundColor || 'transparent'}}

scalesPageToFit={Platform.OS !== 'ios'}

originWhitelist={['*']}

source={{uri: 'file:///android_asset/tpl.html'}}

onMessage={event => this.props.onPress ? this.props.onPress(JSON.parse(event.nativeEvent.data)) : null}/>

);

}

}

可能存在的问题????

同时,在后续的react native版本中,webview即将从react native内部移除出去,改为三方包安装使用。参考:

https://reactnative.cn/docs/webview/#mixedcontentmode

https://github.com/react-native-community/discussions-and-proposals/issues/6

因此,在后续新版本中使用native-echarts,可能会使用不了,因此建议fork一个稳定的版本到自己的github上,或者在后续自己采用react-native-webview + echarts的方式自由的组合版本,使用起来更加自由。

参考文档:

https://github.com/somonus/react-native-echarts/issues/47

https://github.com/somonus/react-native-echarts/issues/32

https://github.com/somonus/react-native-echarts/issues/122

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值