图表增加了适配窗口大小

This commit is contained in:
sijinhui 2024-03-21 14:07:42 +08:00
parent c1a37cdf53
commit b8d8b8353f
2 changed files with 621 additions and 587 deletions

View File

@ -146,6 +146,20 @@ function EchartsComponent({ currentDate, setCurrentDate }: ComponentProps) {
}; };
}, [currentDate, searchDate]); // 空数组作为第二个参数,表示仅在组件挂载和卸载时执行 }, [currentDate, searchDate]); // 空数组作为第二个参数,表示仅在组件挂载和卸载时执行
useEffect(() => {
const handleResize = () => {
console.log("窗口大小变化");
let chartDom = document.getElementById("usage-by-model-chart");
if (!chartDom) return;
const myChart = echarts.getInstanceByDom(chartDom);
myChart?.resize();
};
window.addEventListener("resize", handleResize);
return () => {
window.removeEventListener("resize", handleResize);
};
}, []);
return ( return (
<div <div
id="usage-by-model-chart" id="usage-by-model-chart"

View File

@ -12,8 +12,9 @@ import Script from "next/script";
import * as echarts from "echarts"; import * as echarts from "echarts";
// var echarts = require('echarts'); // var echarts = require('echarts');
require("echarts"); import "echarts/extension/bmap/bmap";
require("echarts/extension/bmap/bmap"); // require("echarts");
// require("echarts/extension/bmap/bmap");
interface DataItem { interface DataItem {
name: string; name: string;
@ -21,6 +22,10 @@ interface DataItem {
} }
export default function UserByMap() { export default function UserByMap() {
const userByMapChart = useRef(null);
useEffect(() => {
if (!userByMapChart.current) return;
const data: DataItem[] = [ const data: DataItem[] = [
{ name: "海门", value: 9 }, { name: "海门", value: 9 },
{ name: "鄂尔多斯", value: 12 }, { name: "鄂尔多斯", value: 12 },
@ -609,18 +614,32 @@ export default function UserByMap() {
}, },
], ],
}; };
useEffect(() => {
const loadEcharts = () => { const loadEcharts = () => {
let chartDom = document.getElementById("userByMapChart"); let chartDom = document.getElementById("userByMapChart");
if (!chartDom) return;
let myChart = echarts.init(chartDom, "default", { let myChart = echarts.init(chartDom, "default", {
renderer: "canvas", renderer: "canvas",
useDirtyRect: false, useDirtyRect: false,
}); });
option && myChart.setOption(option); option && myChart?.setOption(option);
}; };
loadEcharts(); loadEcharts();
}, [option]); }, []);
useEffect(() => {
const handleResize = () => {
let chartDom = document.getElementById("userByMapChart");
if (!chartDom) return;
const myChart = echarts.getInstanceByDom(chartDom);
myChart?.resize();
};
handleResize();
window.addEventListener("resize", handleResize);
return () => {
window.removeEventListener("resize", handleResize);
};
}, []);
return ( return (
<div> <div>
@ -636,8 +655,9 @@ export default function UserByMap() {
{/*/>*/} {/*/>*/}
<div <div
ref={userByMapChart}
id="userByMapChart" id="userByMapChart"
style={{ width: "960px", height: "500px" }} style={{ width: "1080px", height: "600px" }}
></div> ></div>
<Script <Script
src="https://api.map.baidu.com/api?v=3.0&ak=19e9FKQC49u5uQe4CBqan9ER2mYhQ3ip&callback=onBMapCallback" src="https://api.map.baidu.com/api?v=3.0&ak=19e9FKQC49u5uQe4CBqan9ER2mYhQ3ip&callback=onBMapCallback"