React Native 使用 new echarts 时报错
尝试使用 import * as echarts from 'echarts' 引入 echarts ,但是无效
React Native 使用 new echarts 时报错
尝试使用 import * as echarts from 'echarts' 引入 echarts ,但是无效
在 React Native 中使用 ECharts 需要特殊处理,因为 ECharts 直接依赖浏览器 DOM 环境,而 React Native 是移动端原生环境。以下是两种推荐解决方案:
import React, { useRef } from 'react';
import { WebView } from 'react-native-webview';
const EChart = ({ option }) => {
const webViewRef = useRef();
const injectJavaScript = `
// 创建容器
const container = document.createElement('div');
container.style.width = '100%';
container.style.height = '100%';
document.body.appendChild(container);
// 加载 ECharts
const script = document.createElement('script');
script.src = 'https://cdn.jsdelivr.net/npm/echarts@5.4.3/dist/echarts.min.js';
script.onload = () => {
const chart = echarts.init(container);
chart.setOption(${JSON.stringify(option)});
};
document.head.appendChild(script);
true; // 防止警告
`;
return (
<WebView
ref={webViewRef}
originWhitelist={['*']}
source={{ html: '<html><body style="margin:0"></body></html>' }}
injectedJavaScript={injectJavaScript}
style={{ flex: 1 }}
/>
);
};
// 使用示例
const MyChart = () => {
const option = {
xAxis: { type: 'category', data: ['A', 'B', 'C'] },
yAxis: { type: 'value' },
series: [{ data: [10, 20, 30], type: 'bar' }]
};
return <EChart option={option} />;
};npm install react-native-echarts-pro
npm install react-native-webviewimport { ECharts } from 'react-native-echarts-pro';
const MyChart = () => {
const option = {
tooltip: { trigger: 'axis' },
xAxis: { data: ['Mon', 'Tue', 'Wed'] },
yAxis: {},
series: [{ data: [20, 40, 30], type: 'line' }]
};
return (
<ECharts
option={option}
backgroundColor="rgba(0,0,0,0)"
height={300}
/>
);
};import * as echarts from 'echarts' 会报错是因为:
window 和 document 对象document is not defined 错误性能优化:复杂图表建议使用 react-native-echarts-pro 的本地模式
<ECharts
localDataPath={require('./custom-chart.json')}
onLoadEnd={() => console.log('图表加载完成')}
/>onClick 等 props 处理图表交互事件vw/vh 单位或响应式设计,确保图表在不同设备正常显示选择 WebView 方案适合简单场景,react-native-echarts-pro 提供了更完整的封装和性能优化,推荐作为首选方案。
1 回答851 阅读✓ 已解决
1 回答1.1k 阅读
2 回答773 阅读
2 回答617 阅读
2 回答601 阅读
1 回答677 阅读
2 回答520 阅读
RN 不支持 echarts,绘图底层差太多了。
我用过 Victory-react,还可以,推荐试试。