当前位置: 首页 > news >正文

React echarts柱状图点击某个柱子跳转页面

绘制echarts柱状图

在 ECharts 中,如果你想要在点击柱状图的某个柱子时进行页面跳转,你可以通过设置 series 中的 data 属性中的 itemStyle 或者使用 series 的 label 属性中的 emphasis 属性来实现。但是,直接在柱状图中实现点击跳转通常涉及到使用 JavaScript 的事件监听功能,而不是通过 ECharts 的配置直接实现。

步骤 1: 创建 ECharts 实例

首先,确保你已经创建了一个 ECharts 实例并且已经设置了柱状图的配置。

<div id="my-chart" style={{height:400}} />
var myChart = echarts.init(document.getElementById('my-chart'));
var option = {tooltip: {trigger: "axis",},legend: {right: 30,data: ["数量"],},xAxis: {type: 'category',data: ['A', 'B', 'C', 'D', 'E']},yAxis: {type: 'value'},series: [{data: [120, 200, 150, 80, 70],type: 'bar',barWidth: "40%",}]
};myChart.setOption(option);

步骤 2: 添加点击事件监听器

然后,你需要为 ECharts 实例添加一个点击事件监听器。当用户点击柱状图时,这个监听器会被触发。

项目的 react router是 v5 版本的,如果是新的 v6 版本可以使用 navigate

myChart.on('click', function (params) {if (params.componentType === 'series') {// 打印出 params 看一下,里面会有x轴和y轴的数据console.log(params);// 取x轴中的数据作为url的参数传递const {name} = params;// 获取对应的 URL 并进行跳转history.push({pathname: "/newPage",state: { code: name },});}
});

步骤 3: 取参数

传递过来的参数可以在 props.location.state 里看到。

跳转页面

React Router v5和v6 方式不太一样。

React Router v5

在React Router v5中,history.push通常是通过withRouter高阶组件或useHistory钩子(在函数组件中)来访问的。你可以使用history.push方法来携带参数,通常是通过URL的查询字符串(query string)或者通过状态(state)来实现。

通过查询字符串传递参数:

import { useHistory } from 'react-router-dom';function MyComponent() {let history = useHistory();function handleClick() {history.push({pathname: '/some-path',search: '?param1=value1&param2=value2',});}return <button onClick={handleClick}>Go to Some Path</button>;
}

通过状态传递参数:

import { useHistory } from 'react-router-dom';function MyComponent() {let history = useHistory();function handleClick() {history.push({pathname: '/some-path',state: { fromDashboard: true }});}return <button onClick={handleClick}>Go to Some Path</button>;
}

React Router v6

在React Router v6中,history对象被移除,取而代之的是使用useNavigate钩子来进行导航。传递参数的方式略有不同,但依然可以通过查询字符串或状态来实现。

通过查询字符串传递参数:

import { useNavigate } from 'react-router-dom';function MyComponent() {let navigate = useNavigate();function handleClick() {navigate('/some-path?param1=value1&param2=value2');}return <button onClick={handleClick}>Go to Some Path</button>;
}

通过状态传递参数:

import { useNavigate } from 'react-router-dom';function MyComponent() {let navigate = useNavigate();function handleClick() {navigate('/some-path', { state: { fromDashboard: true } });}return <button onClick={handleClick}>Go to Some Path</button>;
}

总结

React Router v5 使用 history.push 或 useHistory 钩子。可以通过 search 属性传递查询字符串,或者通过 state 属性传递状态。

React Router v6 使用 useNavigate 钩子。同样可以通过在 navigate 函数中直接附加查询字符串,或者通过第二个参数传递状态对象。

选择哪种方式取决于你使用的React Router版本以及你的具体需求。

http://www.lryc.cn/news/537723.html

相关文章:

  • wordpress主题插件开发中高频使用的38个函数
  • ElasticSearch基础和使用
  • qt-C++笔记之QGraphicsScene和 QGraphicsView中setScene、通过scene得到view、通过view得scene
  • 小白win10安装并配置yt-dlp
  • 【kafka系列】broker
  • 用大模型学大模型05-线性回归
  • Python实现AWS Fargate自动化部署系统
  • 国产编辑器EverEdit - 上下翻滚不迷路(历史编辑位置、历史光标位置回溯功能)
  • 今日写题work05
  • [C++语法基础与基本概念] std::function与可调用对象
  • 两个实用且热门的 Python 爬虫案例,结合动态/静态网页抓取和反爬策略,附带详细代码和实现说明
  • 华象新闻 | 2月20日前谨慎升级 PostgreSQL 版本
  • 跳跃游戏 II - 贪心算法解法
  • 图像质量评价指标-UCIQE-UIQM
  • CentOS上安装WordPress
  • Spring Boot 原理分析
  • Git 本地项目上传 GitHub 全指南(SSH Token 两种上传方式详细讲解)
  • jenkins服务启动-排错
  • CF 144A.Arrival of the General(Java实现)
  • SAP-ABAP:SAP中REPORT程序和online程序的区别对比
  • Java发展史
  • vue3--SVG图标的封装与使用
  • Datawhale Ollama教程笔记3
  • 学习数据结构(10)栈和队列下+二叉树(堆)上
  • 洛谷 P3660 USACO17FEB Why Did the Cow Cross the Road III 题解
  • 【数据结构】(9) 优先级队列(堆)
  • 如何提升爬虫获取数据的准确性?
  • Obsidian及Zotero常用的插件
  • 闲鱼IP属地是通过电话号码吗?
  • C#多线程异步连接MySQL与SQLserver数据库