rtgk-screen-web/components/screen/Chart/index.js

39 lines
1.1 KiB
JavaScript
Raw Normal View History

2024-06-20 11:26:44 +08:00
import React, {useRef, useEffect, useImperativeHandle} from "react";
import * as echarts from "echarts";
import theme from "./theme.json";
import './echarts-liquidfill'
// import('echarts-liquidfill');
echarts.registerTheme("darkBlue", theme);
export default React.forwardRef(({option}, ref) => {
const chartRef = useRef(null);
const chart = useRef();
useEffect(() => {
chart.current = echarts.init(chartRef.current, "darkBlue");
let resize = () => {
chart.current.resize();
};
window.addEventListener("resize", () => resize());
return window.removeEventListener("resize", () => resize());
}, []);
useEffect(() => {
if (chart && option) {
// console.log("chart",chart)
chart.current.setOption(option);
}
});
useImperativeHandle(ref, () => ({
setOption: (opt) => {
// chart.current.setOption(Object.assign(opt, option));
chart.current.setOption(opt);
},
getChart: () => chart.current,
}));
return <div ref={chartRef} style={{height: "100%", width: "100%"}}/>;
});