react,使用echarts过程

第一步:安装echarts

复制代码
npm install echarts

第二步:创造echarts组件:

代码:

复制代码
import React, { useEffect, useRef } from 'react'
import * as echarts from 'echarts';

function Myecharts(props) {
    // 使用useRef钩子来存储图表容器的DOM元素引用。
    let box = useRef()
 
    // 在组件挂载后和props.option变化时执行的副作用函数。
    useEffect(() => {
        console.log(box.current)
        // 初始化Echarts实例。
        var myChart = echarts.init(box.current);
        console.log(props.option)
        // 根据props.option的存在与否,设置图表的配置选项。
        if(props.option!=null){
            myChart.setOption(props.option)
        }else{
            console.log("没有传过来")
        }
    }, [props.option]) // 仅当props.option变化时,重新执行副作用函数。
 
    // 设置图表容器的样式。不然撑不开
    const stylestr = {
        width: '100%',
        height:'100%'
    }
    // 返回图表的容器元素。
    return (
        <div ref={box} id='main' style={stylestr}>
 
        </div>
    )
}
 
export default Myecharts

第三步:在页面中使用当前组件,代码如下

复制代码
/**
 * 首页组件。
 * 
 * 该组件渲染一个包含图表的页面。图表使用Echarts库绘制,展示了不同渠道的访问量。
 * 它通过定义并使用Echarts的配置选项来定制图表的外观和行为。
 */
import Myecharts from '../compoents/Myecharts'
 
function About() {
    // 定义Echarts图表的配置选项
    let option = {
        tooltip: {
            trigger: 'axis'
        },
        legend: {
            icon: "circle",
            data: ['Email', 'Union Ads', 'Video Ads', 'Direct', 'Search Engine']
        },
        grid: {
            left: '3%',
            right: '4%',
            bottom: '3%',
            containLabel: true
        },
        xAxis: {
            type: 'category',
            boundaryGap: false,
            data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
        },
        yAxis: {
            type: 'value'
        },
        series: [
            {
                name: 'Email',
                type: 'line',
                stack: 'Total',
                showSymbol: false,
                smooth: true,
                data: [120, 132, 101, 134, 90, 230, 210]
            },
            {
                name: 'Union Ads',
                type: 'line',
                stack: 'Total',
                showSymbol: false,
                smooth: true,
                data: [220, 182, 191, 234, 290, 330, 310]
            },
            {
                name: 'Video Ads',
                type: 'line',
                smooth: true,
                showSymbol: false,
                stack: 'Total',
                data: [150, 232, 201, 154, 190, 330, 410]
            },
            {
                name: 'Direct',
                type: 'line',
                smooth: true,
                showSymbol: false,
                stack: 'Total',
                data: [320, 332, 301, 334, 390, 330, 320]
            },
            {
                name: 'Search Engine',
                type: 'line',
                smooth: true,
                showSymbol: false,
                stack: 'Total',
                data: [820, 932, 901, 934, 1290, 1330, 1320]
            }
        ]
    };

    
    //注意要有样式,不然撑不开
    const stystr = {
        width: '500px',
        height: '500px'
    }
 
    // 返回图表容器组件
    return (
        <div style={stystr}>
            <Myecharts option={option}></Myecharts>
        </div>
    )
}
 
export default About
相关推荐
●VON几秒前
React Native for OpenHarmony:项目目录结构与跨平台构建流程详解
javascript·学习·react native·react.js·架构·跨平台·von
We་ct11 分钟前
LeetCode 36. 有效的数独:Set实现哈希表最优解
前端·算法·leetcode·typescript·散列表
qq_1777673721 分钟前
React Native鸿蒙跨平台实现消息列表用于存储所有消息数据,筛选状态用于控制消息筛选结果
javascript·react native·react.js·ecmascript·harmonyos
weixin_3954489122 分钟前
main.c_cursor_0129
前端·网络·算法
摘星编程1 小时前
React Native + OpenHarmony:自定义useEllipsis省略号处理
javascript·react native·react.js
2401_859049081 小时前
git submodule update --init --recursive无法拉取解决
前端·chrome·git
这是个栗子1 小时前
【Vue代码分析】前端动态路由传参与可选参数标记:实现“添加/查看”模式的灵活路由配置
前端·javascript·vue.js
刘一说1 小时前
Vue 动态路由参数丢失问题详解:为什么 `:id` 拿不到值?
前端·javascript·vue.js
2601_949593652 小时前
基础入门 React Native 鸿蒙跨平台开发:Animated 动画按钮组件 鸿蒙实战
react native·react.js·harmonyos
熊猫钓鱼>_>2 小时前
动态网站发布部署核心问题详解
前端·nginx·容器化·网页开发·云服务器·静态部署