首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让echarts与react-grid-layout一起调整大小?

如何让echarts与react-grid-layout一起调整大小?
EN

Stack Overflow用户
提问于 2021-09-02 12:21:47
回答 1查看 525关注 0票数 1

我在我的应用程序中使用ResponsiveGridLayout,React- grid -Layout,我使用echarts作为网格项。

拖放可以正常工作,但是当我调整网格项的大小时,图表并没有随之调整大小。我已经尝试实现了onLayoutchange属性,但它不起作用。

有没有人能帮帮我

这是我复制该问题的codesandbox

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-02 14:54:40

我能够做到这一点,至少在修改网格项宽度(还不是高度...)时,使用this hook,然后在您的图表组件中:

代码语言:javascript
复制
[...]

const chartRef = useRef<HTMLDivElement>();
const size = useComponentSize(chartRef);

useEffect(() => {
  const chart = chartRef.current && echarts.getInstanceByDom(chartRef.current);
  if (chart) {
    chart.resize();
  }
}, [size]);

[...]

return <div ref={chartRef}></div>;

...so当调整网格项的大小时,图表将调整大小。我不确定,对我来说仍然是一个WIP,但它是有效的。

将其提取为自定义钩子

您可以基于@rehooks/component-size创建useEchartResizer.ts

代码语言:javascript
复制
import useComponentSize from '@rehooks/component-size';
import * as echarts from 'echarts';
import React, { useEffect } from 'react';
    
export const useEchartResizer = (chartRef: React.MutableRefObject<HTMLDivElement>) => {
  const size = useComponentSize(chartRef);
   
  useEffect(() => {
    const chart = chartRef.current && echarts.getInstanceByDom(chartRef.current);
    if (chart) {
      chart.resize();
    }
  }, [chartRef, size]);
};

然后在包含图表的组件中使用它:

代码语言:javascript
复制
export const ComponentWithChart = (props): React.ReactElement => {
  const chartRef = useRef<HTMLDivElement>();
  useEchartResizer(chartRef);

  useEffect(() => {
    const chart = echarts.init(chartRef.current, null);
    // do not set chart height in options
    // but you need to ensure that the containing div is not "flat" (height = 0)
    chart.setOption({...} as EChartsOption); 
  });

  return (<div ref={chartRef}></div>);
});

因此,每次调整div的大小时,useEchartResizer都会触发一个chart.resize()。与react-grid-layout配合使用效果很好。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69030195

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档