React Native 는 바 이 두 Echarts 를 사용 하여 도표 의 예제 코드 를 표시 합 니 다.
우선 React Native 프로젝트 에 native-ecarts 구성 요 소 를 설치 해 야 합 니 다.이 구성 요 소 는 IOS 와 안 드 로 이 드 더 블 플랫폼 을 호 환 합 니 다.
설치 하 다.
npm install native-echarts --save
설치 완료 후 nodemodules 폴 더 아래 에 native-ecarts 라 는 폴 더 가 하나 더 나 옵 니 다.디 렉 터 리 구 조 는 다음 그림 과 같다.
기초 사용
native-ecarts 의 사용 방법 은 기본적으로 웹 페이지 의 Echarts 사용 방법 과 일치 합 니 다.구성 요 소 는 주로 세 가지 속성 이 있 습 니 다:
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);
위의 코드 를 통 해 우 리 는 React Native 에 도 표를 표시 할 수 있다.그러나 우 리 는 표 시 된 글꼴 이 비교적 작 다 는 것 을 발견 할 것 이다.이동 단 에 맞 는 글꼴 이 필요 합 니 다.native-ecarts 파일 에서 tpl.html 파일 을 찾 아야 합 니 다.head 에 다음 코드 를 추가 해 야 합 니 다.
<meta name="viewport" content="width=device-width, initial-scale=1">
이렇게 하면 글씨체 의 크기 가 정상적으로 나타난다.진급 사용:
도 표를 사용 할 때 만약 에 우리 가 도표 의 클릭 사건 을 사용 해 야 한다 면,예 를 들 어 기둥 모양 그림 의 어떤 기둥 을 클릭 하여 이 기둥 의 정 보 를 얻 고 상세 한 페이지 로 넘 어가 면 어떻게 해 야 합 니까?구성 요소 자체 에 이 속성 이 없습니다.코드 를 수정 하고 메 시 지 를 전달 해 야 합 니 다.구체 적 인 코드 는 다음 과 같다.
우선 renderChart.js 파일 에 필요 한 데 이 터 를 주입 하고 전달 해 야 합 니 다(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 에서 처리 하기(handle Message):
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 (
<View style={{flex: 1, height: this.props.height,width: this.props.width }}>
<WebView
ref="chart"
scrollEnabled = {false}
injectedJavaScript = {renderChart(this.props)}
style={{
height: this.props.height|| 400,
width: this.props.width || 568,
}}
onMessage={this.handleMessage}
source={require('./tpl.html')}
/>
</View>
);
}
}
마지막 으로 그래프 를 사용 하 는 페이지 에서 코드 를 수정 하여 전 달 된 메 시 지 를 받 아들 입 니 다.<Echarts option={option} height={height} width={theme.screenWidth} handleMessage={this.handleMessage} />
handle Message 방법 에서 전 달 된 데 이 터 를 자신의 논 리 를 써 서 처리 할 수 있 습 니 다.포장:
이렇게 포장 하면 IOS 는 정상적으로 포장 하고 표시 할 수 있 습 니 다.하지만 안 드 로 이 드 에서 포장 할 때 오류 가 발생 할 수 있 습 니 다.
해결 방법:
index.js 의 코드:
source={require('./tpl.html')}
를 다음 으로 변경 합 니 다.source= {Platform.OS === 'ios' ? require('./tpl.html') : { uri: 'file:///android_asset/tpl.html' }}
안 드 로 이 드 프로젝트 아래 app/src/main/assets 폴 더 에 tpl.html 파일 을 복사 합 니 다.react-native bundle 명령 을 실행 한 후 자원 파일 res/drawable-mdpi 에서 생 성 된 tpl.html 파일 을 수 동 으로 삭제 하고 cd android&&./gradlew assemble Release 명령 을 실행 하면 성공 적 으로 포장 할 수 있 습 니 다.
Q1
데이터 양 이 비교적 많 을 때 x 축의 데 이 터 는 표시 되 지 않 습 니 다.이것 은 echarts 자체 의 기능 입 니 다.해결 방법 은 xAxis-axis Label-interval 을 0 으로 설정 하면 됩 니 다.
Q2
면적 접선 도 에서 면적 의 색깔 이'바 르 지 않다'는 것 은 바로 설 치 된 색깔 과 맞지 않 는 다 는 것 이다.이것 은 react-native-ecarts 구성 요소 의 패키지 문제 일 수 있 습 니 다.해결 방법 은 area Style-normal-shadow Color 를'\#ffff ff'로 설정 하 는 것 입 니 다.마찬가지 로 lineStyle 등 을 설정 할 수 있 습 니 다.
Q3
릴 리 스 백 을 칠 때 잘못 신 고 했 습 니 다.
\android\app\src\main\res\drawable-mdpiode_modules_nativeecharts_src_components_echarts_tpl.html
Error:Error: The file name must end with .xml or .png
원인:
release 포장 할 때 nodemodules_nativeecharts_src_components_echarts_tpl.html 가 drawable 에 걸 렸 습 니 다.이 건 안 됩 니 다.assets 에 넣 어야 합 니 다.
해결책 은
또한,release 버 전 은 uri 로 자원 을 불 러 올 수 있 습 니 다.android 는 tpl.html 파일 을 android/app/src/main/assets 파일 에 넣 고 uri:'을 사용 합 니 다.file:///android_asset/tpl.html'이라는 주 소 를 불 러 옵 니 다.ios 는 프로젝트 디 렉 터 리 에 폴 더 를 만 들 고 tpl 파일 을 안에 넣 고 uri:'파일 이름/tpl'로 불 러 옵 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
바삭바삭하고 간단한 결제 페이지 만들기먼저 Next.js에서 프로젝트를 만듭니다. Vercel & Next.js가 매우 편하기 때문에 최근에는이 구성을 사용하고 있습니다. 그런 다음 Tailwind CSS를 넣습니다. Tailwind CSS를 사용하면 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.