Code Monkey home page Code Monkey logo

react-native-echarts-pro's Introduction

react-native-echarts-pro

NPM Version NPM Version license

English 简体中文

A React-Native charts based on Apache ECharts, support various charts and map.

PreView

Basic

iOS基本使用androd基本使用

Map

iOS地图图片android地图图片

Getting started

$ npm install react-native-echarts-pro --save

It is super easy to use Apache ECharts in react-native. Have a look at our Get Started Documentation and onboard your app within minutes. Our detailed documentation is available as well.

Documentation

react-native-echarts-pro-docs

Contributors

@supervons

@ljh257110

@congshengwu

@RengeRenge

@ivantrejo41

react-native-echarts-pro's People

Contributors

congshengwu avatar ivantrejo41 avatar ljh257110 avatar rengerenge avatar supervons avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

react-native-echarts-pro's Issues

relasea打包后extension注入js无法取得myChart实例的问题

暂时只有安卓设备
extension={[
// 注入js 监听点击 取消默认高亮
` setTimeout(function () {
myChart.on('click', (params)=>{
if(params.dataIndex!==0){
myChart.dispatchAction({
type: 'downplay',
dataIndex: 0
})
}
});
}, 1000) `,
]}
我尝试过打包后alert(typeof myChart)输出为undefined,也试过修改源码把const myChart改为 window.myChart,
然后alert(typeof window.myChart)也还是undefined
最后用onPress结合dispatchAction实现了功能
但还是希望能够有办法解决这个问题,以防以后有需求

设置graphic属性 图片不显示 在官网能正常显示

`

import React, {useEffect, useRef, useState} from 'react';
import {
View,
StyleSheet
} from 'react-native';

import ECharts from "react-native-echarts-pro";

import * as echarts from 'echarts'

function GaugeChart(props) { //构造函数
const [option, setOption] = useState({})
const chartRef = useRef(null)

useEffect(() => {
    const defOp = {
        graphic: {
            elements: [{
                type: "image",
                style: {
                    image: "https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fb-ssl.duitang.com%2Fuploads%2Fitem%2F201509%2F27%2F20150927124837_KeRUL.jpeg&refer=http%3A%2F%2Fb-ssl.duitang.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1651219937&t=cd810aaa55f2b18881793b0d577aac9d",//你的图片地址
                    width: 100,
                    height: 100,
                },
                left: "center",
                top: "center",
            }],
        },
        series: [
            {
                type: 'pie',
                name: '',
                radius: ['94%', '100%'],
                data: [
                    { value: 0, name: '' },
                ],
                itemStyle: {
                    borderWidth: 0,
                    color: '#BFDCFF'
                },
                label: {
                    show: false
                },
                emphasis: {
                    disabled: true
                }
            },
            {
                name: 'Pressure',
                type: 'gauge',
                startAngle: 90,
                endAngle: -270,
                radius: "94%",
                axisTick: {
                    show: false
                },
                pointer: {
                    show: false
                },
                splitLine: {
                    show: false
                },
                anchor: {
                    show: false
                },
                axisLabel: {
                    show: false,

                },
                label: {
                    show: false
                },
                title: {
                    show: false
                },
                progress: {
                    show: true,
                    width: 3,
                    itemStyle: {
                        borderWidth: 0,
                        color: '#0072FF'
                    }
                },
                detail: {
                    show: false
                },
                axisLine: {
                    show: false,
                },
                // detail: {
                //     valueAnimation: true,
                //     formatter: '{value}'
                // },
                data: [
                    {
                        value: 50,
                    }
                ]
            }
        ]
    }
    setOption(defOp)
}, [])

return (
    <ECharts
        ref={chartRef}
        option={option}
        height={85}
    />
)

}

const styles = StyleSheet.create({});

export default GaugeChart

`

同一个页面使用多个图表时只显示一个

同一个页面使用多个图表时只显示一个,不知道是不是只有我遇到这种问题,咋处理

"react": "17.0.1",
"react-native": "0.64.2",
"react-native-echarts-pro": "^1.7.3",

// 比如这两个组件各有一个图表,在同一页面时只显示下面的那个
<StepCountCard
  width="132"
  height={212}
  margin="0 12 0 0"
  border="1 solid controlBorder"
  borderRadius="14"
/>

<HeartRateCard
  width="132"
  height={212}
  margin="0 12 0 0"
  border="1 solid controlBorder"
  borderRadius="14"
/>

// StepCountCard的图表部分代码
import RNEChartsPro from 'react-native-echarts-pro';

const chartOption = {
 ... // 图表的配置
};

<FlexColContainer
  {...layoutProps}
  flexGrow="1"
>
  <RNEChartsPro
    height={this.props.height}
    option={chartOption}
    webViewSettings={{
      scrollEnabled: true,
      style: {
        backgroundColor: 'transparent',
      },
    }}
  />
</FlexColContainer>

怎样添加各种on事件啊

图例交互事件:

1) legendselectchanged : 切换图例选中状态后的事件 (注:图例组件用户切换图例开关会触发该事件,不管你有没有选择,点击了就触发)

2)legendselected:例组件用legendSelect 图例选中后的事件,即点击显示该图例时,触发就生效。

3)legendunselected: legendUnSelect 图例取消选中后的事件。

4)datazoom:数据区域缩放后的事件。缩放视觉映射组件。

5)datarangeselected:selectDataRange 视觉映射组件中,range 值改变后触发的事件。

6)timelinechanged:timelineChange 时间轴中的时间点改变后的事件。

7)timelineplaychanged:timelinePlayChange 时间轴中播放状态的切换事件。

8)restore: restore 重置 option 事件。

9)dataviewchanged:工具栏中数据视图的修改事件。

10)magictypechanged:工具栏中动态类型切换的切换事件。

**11)geoselectchanged:geo 中地图区域切换选中状态的事件(用户点击选中会触发该事件。)。

12)geoselected:geo 中地图区域选中后的事件(使用dispatchAction可触发此事件,用户点击不会触发此事件(用户点击事件请使用 geoselectchanged))。

13)geounselected:geo 中地图区域取消选中后的事件,使用dispatchAction可触发此事件,用户点击不会触发此事件(用户点击事件请使用 geoselectchanged)。**

14)pieselectchanged:series-pie 中饼图扇形切换选中状态的事件,用户点击选中会触发该事件。

15)pieselected:series-pie 中饼图扇形选中后的事件,使用dispatchAction可触发此事件,用户点击不会触发此事件(用户点击事件请使用 pieselectchanged)。

16)pieunselected:series-pie 中饼图扇形取消选中后的事件,使用dispatchAction可触发此事件,用户点击不会触发此事件(用户点击事件请使用 pieselectchanged)。

17)mapselectchanged: series-map 中地图区域切换选中状态的事件,用户点击选中会触发该事件。

18)mapselected:series-map 中地图区域选中后的事件,使用dispatchAction可触发此事件,用户点击不会触发此事件(用户点击事件请使用 mapselectchanged)。

19)mapunselected:series-map 中地图区域取消选中后的事件,使用dispatchAction可触发此事件,用户点击不会触发此事件(用户点击事件请使用 mapselectchanged)。

20)axisareaselected:平行坐标轴 (Parallel) 范围选取事件,

当进行坐标轴范围选取时,可以用如下方式获取当前高亮的线所对应的 data indices (即 series 的 data 中的序号列表)。

Chart doesn't show if hermes is enabled on android.

I gave option like below(callback function), and chart doesn't show only at android.
(I tried template variable {value}, and it works.)

...
  yAxis: {
    axisLabel: {
      formatter: function (value) {
        'show source';
        
        if (value >= 1000000) {
          value = value / 1000000 + 'M';
        } else if (value >= 1000) {
          value = value / 1000 + 'k';
        }

        return value;
      },
    },
...
"react-native-echarts-pro": "1.8.3",
"react-native": "0.68",

包无法更新1.7.4版本

您好,我想使用1.7.4新添加的功能,但是yarn更新的时候显示包的版本只有到1.7.3,npm 查看包所有版本也只到1.7.3,请问这个该如何处理?

安卓机上无法适配 「显示大小」

hello,这边又遇到一个问题。
在部分安卓机子上,系统设置里面可以开启显示大小,效果为各种UI控件都会被缩放。
此时 react-native-echarts-pro 的显示会变得不太合理

  • 我通过修改源码发现实际的webView区域还是充满的,只是canvas的宽高获取不太正确
  • 在缩小的情况下 图表的 backgroundColor 好像发生了变化,蒙上了一层白白的效果
  1. 可否提供禁用改缩放功能的选项
  2. 可否能让 body 的背景颜色和图表的背景颜色相同,以防出现缩小时暴露出白/黑的背景颜色

image
image

TEST是我修改源码添加的一个div

image

LineChart tooltip formatter does't work after change data

`getChartOption(yAxisData) {
let xAxisData = [];
for (let i = 0; i < 24; i++) {
xAxisData.push(i+"");
}

    let xAxis = {
        type: 'category',
        nameTextStyle: {
            color: '#999999',
            fontWeight: '400',
            fontSize: 9,
            lineHeight: 15,
        },
        axisLabel: {
            showMaxLabel: true,
            interval: 3,
        },
        axisPointer: {
            show: true,
            type: 'line',
            lineStyle: {
                color: '#BCBCBC',
                width: 1,
                type: 'solid',
            },
            label: {
                show: false,
            },
        },
        data: xAxisData,
    };

    let yAxis = {
        type: 'value',
        position: 'right',
    };

    let tooltip = {
        trigger: 'axis',
        position: 'right',
        backgroundColor: '#4D4D4D',
        borderWidth: 0,
        formatter: function(params) {
            'show source';
            return "<span style='color:#ffffff80'>" + params[0].seriesName + "</span><span style='color:#ffffff;margin-left:7px;'>" + params[0].value + '</span><br/>'
                + "<span style='color:#ffffff80'>" + params[1].seriesName + "</span><span style='color:#ffffff;margin-left:7px;'>" + params[1].value + '</span><br/>'
                + "<span style='color:#ffffff80'>" + params[2].seriesName + "</span><span style='color:#ffffff;margin-left:7px;'>" + params[2].value + '</span>';
        },
    };

    return {
        xAxis,
        yAxis,
        tooltip,
        series: yAxisData,
    };
}

render() {
    return <RNEChartsPro
        option={this.getChartOption(this.props.yAxisData)}
        height={280}
        webViewSettings={{
            scrollEnabled: false,
        }}
    />;
}`

Formatter function from the example not working

Hi, thank you for the amazing library. When I try your example I do not see tooltips rendering. If I take out the formatter function, the tooltips work fine.

react-native-echarts-pro【1.8.0】
react-native version【0.65.1】
react-native-webview 【11.17.2】
Platform【android】

I'm trying to understand if formatter functions are supported at all since you seem to be stripping them out in the toString function.

安卓真机5.1不显示图表

react-native-echarts-pro【1.7.4】
react-native version【0.63.4】
react-native-webview 【11.0.2】
Platform【android】
模拟器上可以正常显示,高版本的真机也可以显示

android build issue

hi first i really appreciate for module you build in.
I use your module but I can't resolve the Android build issue, so I write this page.

at first, when I build android, Chart Option that use function, then result module doesn't work.
and, zooming action doesn't work and often contents of chart doesn't visible.

how can I solve this situation?
if you already solve my situation, please answer me the solution

thank you.

提 Issue 之前必读【Must read before submit new issue】

为了减少沟通,快速定位问题,希望提issue前,能提供以下信息:

  • 问题描述;
  • react-native-echarts-pro 版本;
  • react-native 版本;
  • react-native-webview 版本;
  • 平台;
  • 系统版本;
  • 最小可复现 Demo;

In order to reduce communication and quickly fix problems, I hope the following information can be provided before you submit new issue:

  • Problem description
  • react-native-echarts-pro version;
  • react-native version;
  • react-native-webview version;
  • Platform;
  • System version;
  • Minimum reproducible Demo;

Such as ,比如:

大家好,我的图表无法正常在android设备展示,但是在iOS正常;Hello, my chart doesn't work on Android devices, but it works on iOS;

  • react-native-echarts-pro【1.6.1】
  • react-native version【0.64.1】
  • react-native-webview 【11.6.6】
  • Platform【android】
  • System【10】
  • Demo:
import React from "react";
import { View } from "react-native";
import RNEChartsPro from "react-native-echarts-pro";
export default function ChartsComponent() {
  const pieOption = {
    tooltip: {
      trigger: "axis",
    },
    legend: {
      type: "scroll", // 设置图例翻页
      orient: "horizontal", // 图例横
      data: ["邮件营销", "联盟广告", "视频广告", "直接访问", "搜索引擎"],
    },
    grid: {
      left: "3%",
      right: "4%",
      bottom: "3%",
      containLabel: true,
    },
    xAxis: {
      type: "category",
      boundaryGap: false,
      data: ["周一", "周二", "周三", "周四", "周五", "周六", "周日"],
    },
    yAxis: {
      type: "value",
    },
    series: [
      {
        name: "邮件营销",
        type: "line",
        stack: "总量",
        data: [120, 132, 101, 134, 90, 230, 210],
      }
    ],
  };

  return (
    <View style={{ height: 300, paddingTop: 25 }}>
      <RNEChartsPro
        onPress={res => alert(JSON.stringify(res))}
        legendSelectChanged={res => alert(res)}
        height={250}
        option={pieOption}
      />
    </View>
  );
}

希望能够帮助到大家!
Hope to be able to help everyone!

安卓模拟器上图表可以显示,真机上不显示

react-native-echarts-pro【1.7.3】
react-native version【0.59.5】
react-native-webview 【6.11.1】
Platform【android】
System【10,11】
Demo:
/**

  • 柱状
    */
    export const pieOptionColumn = (xData, yData, max) => {
    return {
    color: [theme.orangeColor],
    tooltip: {
    trigger: 'axis',
    axisPointer: { // 坐标轴指示器,坐标轴触发有效
    type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
    }
    },
    grid: {
    left: '1%',
    right: '1%',
    bottom: '3%',
    top: '8%',
    containLabel: true
    },
    xAxis: [
    {
    type: 'category',
    data: xData,
    axisTick: {
    alignWithLabel: true
    }
    }
    ],
    yAxis: [
    {
    type: 'value',
    max: max,
    }
    ],
    series: [
    {
    name: '金额',
    type: 'bar',
    barWidth: '30%',
    data: yData,
    }
    ]
    }
    };

import React from "react";
import { View } from "react-native";
import RNEChartsPro from "react-native-echarts-pro";

return (
<View style={{ height: 300, paddingTop: 25 }}>
<RNEChartsPro
onPress={res => {
console.log(res)
}}
legendSelectChanged={res => console.log(res)}
width={this.state.chartsWidth}
height={this.state.chartsHeight}
option={pieOptionColumn(xData, yData, this.state.moneyMax)}
/>

);
}

宽高不支持变化吗

我的app支持旋转,我在 onLayout 里面获取到新的页面宽高,用 setState 刷新页面,图表的宽高没有发生变化

另外请问支持 type 为 custom 的类型吗,我需要自定义布局,下面这段是官网上的例子

var option = {
    ...,
    series: [{
        type: 'custom',
        renderItem: function (params, api) {
            var categoryIndex = api.value(0);
            var start = api.coord([api.value(1), categoryIndex]);
            var end = api.coord([api.value(2), categoryIndex]);
            var height = api.size([0, 1])[1] * 0.6;

            var rectShape = echarts.graphic.clipRectByRect({
                x: start[0],
                y: start[1] - height / 2,
                width: end[0] - start[0],
                height: height
            }, {
                x: params.coordSys.x,
                y: params.coordSys.y,
                width: params.coordSys.width,
                height: params.coordSys.height
            });

            return rectShape && {
                type: 'rect',
                shape: rectShape,
                style: api.style()
            };
        },
        data: data
    }]
}

formatter's in tooltip, axisLabel are being reset.

  const testOption = {
    tooltip: {
      backgroundColor: 'rgba(255,255,255,0.8)',
      borderColor: '#668BEE',
      borderWidth: 1,
      padding: [5, 10],
      textStyle: {
        color: '#24283C',
        fontSize: 12,
      },
      trigger: 'item',
      formatter: function (a) { // Changed here!!!
        return 'hihi';
      },
    },
    series: [
      {
        name: 'Source',
        type: 'pie',
        legendHoverLink: true,
        hoverAnimation: true,
        avoidLabelOverlap: true,
        startAngle: 180,
        radius: '55%',
        center: ['50%', '35%'],
        data: [
          {value: 105.2, name: 'android'},
          {value: 310, name: 'iOS'},
          {value: 234, name: 'web'},
        ],
        label: {
          normal: {
            show: true,
            textStyle: {
              fontSize: 12,
              color: '#23273C',
            },
          },
        },
        emphasis: {
          lable: {
            show: true,
            fontSize: 12,
            color: '#668BEE',
          },
          itemStyle: {
            show: true,
            shadowBlur: 10,
            shadowOffsetX: 0,
            shadowColor: 'rgba(0, 0, 0, 0.5)',
          },
        },
      },
    ],
  };

[First]
image

[Second]
image

I set custom formatter like code, and this works for a while and a few seconds later, it shows default tooltip formatter. I tried setNewOption, and same result.

安卓一个页面使用两个图表时,关闭页面时崩溃

问题描述:安卓一个页面使用两个图表时,关闭页面时崩溃,无法定位问题在哪。
我试过了只用一个图表或者不使用图表时,都不会有问题,当我使用两个的时候,在关闭页面时就会崩溃,iOS没有问题。
logcat崩溃日志
react-native-echarts-pro 1.7.0;
react-native 0.61.5;
react-native-webview 9.1.0;
平台;
系统版本 Android 11;

logcat崩溃日志:

2021-09-02 23:17:05.340 25141-25141/? A/crashpad: -----BEGIN CRASHPAD MINIDUMP-----
2021-09-02 23:17:05.372 25141-25141/? A/crashpad: -----BEGIN CRASHPAD MINIDUMP-----
2021-09-02 23:17:05.372 25141-25141/? A/crashpad: )iyJD'cB?sj68?'rN%:M>MCR}9aM]/ER=M>。。。。超长串乱码
2021-09-02 23:17:05.503 25141-25141/? A/crashpad: -----END CRASHPAD MINIDUMP-----
2021-09-02 23:17:05.513 24794-24821/com.sinocem.slags A/libc: Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x20 in tid 24821 (RenderThread), pid 24794 (m.sinocem.slags)
2021-09-02 23:17:05.596 594-594/? E/SELinux: avc: denied { find } for pid=5831 uid=10207 name=tethering scontext=u:r:vendor_systemhelper_app:s0:c512,c768 tcontext=u:object_r:tethering_service:s0 tclass=service_manager permissive=0
2021-09-02 23:17:05.602 25144-25144/? A/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
2021-09-02 23:17:05.602 25144-25144/? A/DEBUG: Build fingerprint: 'Xiaomi/venus/venus:11/RKQ1.200928.002/V12.5.11.0.RKBCNXM:user/release-keys'
2021-09-02 23:17:05.602 25144-25144/? A/DEBUG: Revision: '0'
2021-09-02 23:17:05.602 25144-25144/? A/DEBUG: ABI: 'arm64'
2021-09-02 23:17:05.602 25144-25144/? A/DEBUG: Timestamp: 2021-09-02 23:17:05+0800
2021-09-02 23:17:05.602 25144-25144/? A/DEBUG: pid: 24794, tid: 24821, name: RenderThread >>> com.sinocem.slags <<<
2021-09-02 23:17:05.602 25144-25144/? A/DEBUG: uid: 10404
2021-09-02 23:17:05.602 25144-25144/? A/DEBUG: signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x20
2021-09-02 23:17:05.602 25144-25144/? A/DEBUG: Cause: null pointer dereference
2021-09-02 23:17:05.602 25144-25144/? A/DEBUG: x0 0000007330fb8140 x1 00000074329079a8 x2 0000000000000002 x3 000000739f0ef5b0
2021-09-02 23:17:05.602 25144-25144/? A/DEBUG: x4 000000739ec02538 x5 000000739ec43500 x6 000000739f0ef03c x7 0000000000000000
2021-09-02 23:17:05.602 25144-25144/? A/DEBUG: x8 0000000000000000 x9 0000000000000000 x10 0000000200000004 x11 0000000000000000
2021-09-02 23:17:05.602 25144-25144/? A/DEBUG: x12 0000000000000000 x13 00000000000001cd x14 0000000000000000 x15 0000000000000000
2021-09-02 23:17:05.602 25144-25144/? A/DEBUG: x16 0000007432b16cf0 x17 00000074326de718 x18 00000073428aa000 x19 000000733b8c9000
2021-09-02 23:17:05.602 25144-25144/? A/DEBUG: x20 0000000000000000 x21 0000000000000000 x22 0000000000000003 x23 0000000000000000
2021-09-02 23:17:05.602 25144-25144/? A/DEBUG: x24 0000000000000000 x25 0000000000000000 x26 00000000000005c0 x27 0000000000000000
2021-09-02 23:17:05.602 25144-25144/? A/DEBUG: x28 0000000000000000 x29 000000739f0ef720
2021-09-02 23:17:05.602 25144-25144/? A/DEBUG: lr 00000074325aff78 sp 000000739f0ef580 pc 00000074325affc0 pst 0000000020001000
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: backtrace:
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #00 pc 0000000000218fc0 /system/lib64/libhwui.so (android::uirenderer::skiapipeline::GLFunctorDrawable::onDraw(SkCanvas*)+884) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #1 pc 00000000002b60fc /system/lib64/libhwui.so (SkDrawable::draw(SkCanvas*, SkMatrix const*)+88) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #2 pc 00000000005700b4 /system/lib64/libhwui.so (SkGpuDevice::drawDrawable(SkDrawable*, SkMatrix const*, SkCanvas*)+300) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #3 pc 00000000001d87dc /system/lib64/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::drawContent(SkCanvas*) const+952) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #4 pc 00000000001d9098 /system/lib64/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::onDraw(SkCanvas*)+252) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #5 pc 00000000001f5ea4 /system/lib64/libhwui.so (android::uirenderer::$_24::__invoke(void const*, SkCanvas*, SkMatrix const&)+84) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #6 pc 00000000001d8830 /system/lib64/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::drawContent(SkCanvas*) const+1036) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #7 pc 00000000001d9098 /system/lib64/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::onDraw(SkCanvas*)+252) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #8 pc 00000000001f5ea4 /system/lib64/libhwui.so (android::uirenderer::$_24::__invoke(void const*, SkCanvas*, SkMatrix const&)+84) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #9 pc 00000000001d8830 /system/lib64/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::drawContent(SkCanvas*) const+1036) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #10 pc 00000000001d9098 /system/lib64/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::onDraw(SkCanvas*)+252) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #11 pc 00000000001f5ea4 /system/lib64/libhwui.so (android::uirenderer::$_24::__invoke(void const*, SkCanvas*, SkMatrix const&)+84) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #12 pc 00000000001d8830 /system/lib64/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::drawContent(SkCanvas*) const+1036) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #13 pc 00000000001d9098 /system/lib64/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::onDraw(SkCanvas*)+252) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #14 pc 00000000001f5ea4 /system/lib64/libhwui.so (android::uirenderer::$_24::__invoke(void const*, SkCanvas*, SkMatrix const&)+84) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #15 pc 00000000001d8830 /system/lib64/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::drawContent(SkCanvas*) const+1036) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #16 pc 00000000001d9098 /system/lib64/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::onDraw(SkCanvas*)+252) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #17 pc 00000000001f5ea4 /system/lib64/libhwui.so (android::uirenderer::$_24::__invoke(void const*, SkCanvas*, SkMatrix const&)+84) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #18 pc 00000000001d8830 /system/lib64/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::drawContent(SkCanvas*) const+1036) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #19 pc 00000000001d9098 /system/lib64/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::onDraw(SkCanvas*)+252) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #20 pc 00000000001f5ea4 /system/lib64/libhwui.so (android::uirenderer::$_24::__invoke(void const*, SkCanvas*, SkMatrix const&)+84) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #21 pc 00000000001d8808 /system/lib64/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::drawContent(SkCanvas*) const+996) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #22 pc 00000000001d9098 /system/lib64/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::onDraw(SkCanvas*)+252) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #23 pc 00000000001f5ea4 /system/lib64/libhwui.so (android::uirenderer::$_24::__invoke(void const*, SkCanvas*, SkMatrix const&)+84) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #24 pc 00000000001d8830 /system/lib64/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::drawContent(SkCanvas*) const+1036) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #25 pc 00000000001d9098 /system/lib64/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::onDraw(SkCanvas*)+252) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #26 pc 00000000001f5ea4 /system/lib64/libhwui.so (android::uirenderer::$_24::__invoke(void const*, SkCanvas*, SkMatrix const&)+84) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #27 pc 00000000001d8808 /system/lib64/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::drawContent(SkCanvas*) const+996) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #28 pc 00000000001d9098 /system/lib64/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::onDraw(SkCanvas*)+252) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #29 pc 00000000001f5ea4 /system/lib64/libhwui.so (android::uirenderer::$_24::__invoke(void const*, SkCanvas*, SkMatrix const&)+84) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #30 pc 00000000001d8808 /system/lib64/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::drawContent(SkCanvas*) const+996) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #31 pc 00000000001d92f4 /system/lib64/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::forceDraw(SkCanvas*) const+196) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #32 pc 000000000021e4d0 /system/lib64/libhwui.so (android::uirenderer::skiapipeline::SkiaPipeline::renderLayersImpl(android::uirenderer::LayerUpdateQueue const&, bool)+604) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #33 pc 000000000021fbf0 /system/lib64/libhwui.so (android::uirenderer::skiapipeline::SkiaPipeline::renderFrame(android::uirenderer::LayerUpdateQueue const&, SkRect const&, std::__1::vector<android::spandroid::uirenderer::RenderNode, std::__1::allocator<android::spandroid::uirenderer::RenderNode > > const&, bool, android::uirenderer::Rect const&, sk_sp, SkMatrix const&)+148) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #34 pc 000000000021cca8 /system/lib64/libhwui.so (android::uirenderer::skiapipeline::SkiaOpenGLPipeline::draw(android::uirenderer::renderthread::Frame const&, SkRect const&, SkRect const&, android::uirenderer::LightGeometry const&, android::uirenderer::LayerUpdateQueue*, android::uirenderer::Rect const&, bool, android::uirenderer::LightInfo const&, std::__1::vector<android::spandroid::uirenderer::RenderNode, std::__1::allocator<android::spandroid::uirenderer::RenderNode > > const&, android::uirenderer::FrameInfoVisualizer*)+416) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #35 pc 0000000000225e84 /system/lib64/libhwui.so (android::uirenderer::renderthread::CanvasContext::draw()+1024) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #36 pc 0000000000228374 /system/lib64/libhwui.so (_ZNSt3__110__function6__funcIZN7android10uirenderer12renderthread13DrawFrameTask11postAndWaitEvE3$_0NS_9allocatorIS6_EEFvvEEclEv$c303f2d2360db58ed70a2d0ac7ed911b+484) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #37 pc 0000000000216884 /system/lib64/libhwui.so (android::uirenderer::WorkQueue::process()+220) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #38 pc 000000000023878c /system/lib64/libhwui.so (android::uirenderer::renderthread::RenderThread::threadLoop()+88) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #39 pc 00000000000154cc /system/lib64/libutils.so (android::Thread::_threadLoop(void*)+260) (BuildId: 4e69b93bf70ed592f0029dbd1097529e)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #40 pc 0000000000014d90 /system/lib64/libutils.so (thread_data_t::trampoline(thread_data_t const*)+412) (BuildId: 4e69b93bf70ed592f0029dbd1097529e)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #41 pc 00000000000eb828 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+64) (BuildId: 5f57d25b37c043ed36c0e4147dcc8b3f)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #42 pc 000000000008ba48 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64) (BuildId: 5f57d25b37c043ed36c0e4147dcc8b3f)
2021-09-02 23:17:05.797 594-594/? E/SELinux: avc: denied { find } for pid=5831 uid=10207 name=tethering scontext=u:r:vendor_systemhelper_app:s0:c512,c768 tcontext=u:object_r:tethering_service:s0 tclass=service_manager permissive=0
2021-09-02 23:17:05.909 25144-25144/? E/crash_dump64: cannot open libmiuindbg.so: No such file or directory
2021-09-02 23:17:05.909 777-777/? E/tombstoned: Tombstone written to: /data/tombstones/tombstone_22

没有触发事件

legendSelectChanged?(result: string);
onDataZoom?(result: string);
没有触发事件

你好,ios中配置formatterVariable在tooltip中使用本地运行是没问题的,但是打完包之后会导致图表不显示

react-native-echarts-pro【1.8.2】
react-native version【0.63.4】
react-native-webview 【11.4.0】
Platform【ios】
System【14.6】
Demo:

class demo extends React.Component {
    constructor(props) {
        super(props);
        this.state = {
            tooltipData: {
	            "2022-03-25": "",
	            "2022-03-26": "",
	            "2022-03-27": "",
	            "2022-03-28": "",
	            "2022-03-29": "",
	            "2022-03-30": "a:13<br/>b:8<br/>c:5<br/>",
	            "2022-03-31": "a:17<br/>b:25<br/>c:25<br/>",
	            "2022-04-01": "a:13<br/>b:5<br/>c:5<br/>",
	            "2022-04-02": "z:16<br/>b:20<br/>c:20<br/>"
            }
        };
    }
  const pieOption = {
    tooltip: {
      trigger: "axis",
      formatter:  (params) => {
            return (
                   params[0].seriesName + ":" + params[0].data +'<br />' 
                   + formatterVariable[params[0].name]
             )                
         }
    },
    grid: {
      left: "3%",
      right: "4%",
      bottom: "3%",
      containLabel: true,
    },
    xAxis: {
      type: "category",
      boundaryGap: false,
      data: ["2022-03-27, "2022-03-28", "2022-03-29", "2022-03-30", "2022-03-31", "2022-04-01", "2022-04-02],
    },
    yAxis: {
      type: "value",
    },
    series: [
      {
        name: "邮件营销",
        type: "line",
        stack: "总量",
        data: [120, 132, 101, 134, 90, 230, 210],
      }
    ],
  };
  render() {
      return (
          <View style={{ height: 300, paddingTop: 25 }}>
            <RNEChartsPro
                 formatterVariable={this.state.tooltipData}
                 option={pieOption}
                 height={500}
                 width={800}
            />
          </View>
        );
  }
}
export default demo;

setOption 可能存在问题

当前 setOption 视乎无法传递函数

Demo:

  const echartsOption = {
    xAxis: {
      type: 'category',
      data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
      axisLabel: {
        // 正常
        formatter() {
          return 'abc';
        },
      },
    },
    yAxis: {
      type: 'value',
    },
    series: [
      {
        data: [150, 230, 224, 218, 135, 147, 260],
        type: 'line',
      },
    ],
  };

  const setOptions = () => {
    rnEchartsProRef.current?.setNewOption({
      xAxis: {
        type: 'category',
        data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
        axisLabel: {
          // 在 setNewOption 中表现不正常, 视乎无法传递函数
          formatter(params) {
            return '456';
          },
         // formatter: '456', 在 setNewOption 中正常工作, 普通字符
        },
      },
      yAxis: {
        type: 'value',
      },
      series: [
        {
          data: [150, 230, 224, 218, 135, 147, 260],
          type: 'line',
        },
      ],
    });
  };

安卓demo正常显示,iOS不显示,没报错

react-native-echarts-pro【1.7.5】
react-native version【0.63.3】
react-native-webview 【10.3.1】
Platform【ios】
System【14.4】
Demo:就是你的demo

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 (
      <Echarts option={option} height={300} />
    );
  }
}

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

xAxis的formatter无法实现换行

同样的option,xAxis的formatter在网页上可以实现换行的效果,在app上不行,有什么解决方案么
网页上的效果
app上的效果

import React, { Component } from "react";
import { Text, View } from "react-native";
import Echarts from "react-native-echarts-pro";
export default class StockInDetail extends Component {
	constructor(props) {
		super(props);
		this.state = {};
	}
	render() {
		return (
			<View style={{ flex: 1, justifyContent: "center", alignItems: "center" }}>
				<Echarts
					option={{
						xAxis: {
							type: "category",
							data: [1, 2, 3, 4],
							axisLabel: {
								interval: 0,
								formatter: ["{value}", "2021年"].join("\n"),
							},
						},
						yAxis: {
							type: "value",
						},
						series: [
							{
								data: [150, 230, 224, 218],
								type: "line",
							},
						],
					}}
					height={300}
				/>
			</View>
		);
	}
}

修改options之后,上个options的绘图数据没有清除

这里是bug的视频

RPReplay_Final1647418770.MP4

这是我设置新options的代码

this.setState({
      options: options
}}, () => {
      this.echarts.setNewOption(options)
})

这是图表绘制的代码

<RNEChartsPro
      ref={(echarts) => (this.echarts = echarts)}
      webViewSettings={{
        scrollEnabled: false,
        style: { borderBottomLeftRadius: 20, borderBottomRightRadius: 20 },
      }}
      height={chartHeight}
      width={chartWidth}
      option={this.state.options} />

tooltip data use outside chart

hello, I'm using your library to adjust project
but I have question about something.

I checked the module about event. example onPress, onDataZoom
but I need data about tooltip outside your module

I try to manipulate your module to listen event about tooltip
but Only receive event are Touch event OnPress or DataZoom.

would you able to get tooltip info if touch event triggered?
that event get outside on your module. that would be great to use my project.

but I really thank you about your sincere feedback on your project
Thank you

use the hooks instead of class

hello, i question about new issue,
i'm not familiar with class components, so, would you give me example about using hooks instead of class

especially I use candlestick chart about realtime, so I really appreciate about example using hooks with useRef

Thank you for your kindness

"react-native": "0.64.1",
"react-native-webview": "^11.6.6",
"react-native-echarts-pro": "^1.6.0",

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.