Antd Charts 折线图(面积图)踩的坑

问题一:在多tab下包裹折线图,当切换tab后,折线图的高度会缩小,整个图缩成一团;

代码

return (
    <ProCard >
        <Procard.TabPane key="tab1" tab="产品数量">
            <Area [...areaConfig} />
        </ProCard.TabPane>
         <Procard.TabPane key="tab2" tab="资产规模">
            <Area [...areaConfig}/>
        </ProCard.TabPane>
    </Procard>
)

 图示:

切换前:

 切换后:

 问题原因:不求知啊,垃圾antd。

解决思路:每次切换tab的时候,都重新加载折线图;

具体代码

1.设定一个种子作为折线图的key;

2.在tab切换时,给种子一个随机值;

const [seed,setSeed] = useState(1);//设定种子

return (
    <ProCard 
        tab={
            onChange =()=>{
                setSeed(Math.random());
            }
        }>
        <Procard.TabPane key="tab1" tab="产品数量">
            <Area [...areaConfig} key={seed}/>
        </ProCard.TabPane>
         <Procard.TabPane key="tab2" tab="资产规模">
            <Area [...areaConfig} key={seed+1}/>
        </ProCard.TabPane>
    </Procard>
)

问题二:完事儿之后我又在下面开发了一个带tab的条形图,结果明明毫无关联,下面的tab切换,上面的折线图就会重新渲染;折线图的tab切换,条形图就没事。

解决思路:用userMamo()控制控件刷新,正好用上之前的seed;

具体代码:

const [seed,setSeed] = useState(1);//设定tab1种子
const [barSeed,setBarSeed] = useState(10);//设定tab2种子

//别忘了在页面加载的时候刷新seed值
useEffect(()=>{
    setSeed(Math.random)
})

return (
    <ProCard 
        tab={
            onChange =()=>{
                setSeed(Math.random());
            }
        }>
        <Procard.TabPane key="tab1" tab="产品数量">
           { useMemo(()=><Area [...areaConfig} key={seed}/>,[seed])}
        </ProCard.TabPane>
         <Procard.TabPane key="tab2" tab="资产规模">
          { useMemo(()=><Area [...areaConfig} key={seed}/>,[seed])}
        </ProCard.TabPane>
    </Procard>
    <ProCard 
        tab={
            onChange =()=>{
                setBarSeed(Math.random());
            }
        }>
        <Procard.TabPane key="tab11" tab="产品数量">
           <Bar[...barConfig} key={barSeed}/>
        </ProCard.TabPane>
         <Procard.TabPane key="tab22" tab="资产规模">
          <Area [...barConfig} key={barSeed+1}/>
        </ProCard.TabPane>
    </Procard>

)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
对于 React 和 Ant Design(antd)以及 AntV 折线图的请求接口,你可以按照以下步骤进行操作: 1. 首先,确保你已经安装了所需的依赖包。在项目根目录下,运行以下命令安装所需依赖: ```bash npm install antd @ant-design/icons @antv/l7 axios ``` 2. 在你的 React 组件中,引入需要的库和组件: ```jsx import React, { useEffect, useState } from 'react'; import { Line } from '@ant-design/charts'; import axios from 'axios'; import { Button } from 'antd'; ``` 3. 创建一个函数组件,并在其中定义一个状态变量来存储从接口获取的数据: ```jsx const LineChart = () => { const [data, setData] = useState([]); ``` 4. 使用 useEffect 钩子函数来发送请求并更新数据: ```jsx useEffect(() => { const fetchData = async () => { try { const response = await axios.get('your_api_endpoint'); setData(response.data); } catch (error) { console.error(error); } }; fetchData(); }, []); ``` 确保将 `'your_api_endpoint'` 替换为你实际的数据接口地址。 5. 在渲染部分,将折线图组件包裹在你的自定义组件中,并将数据传递给折线图组件: ```jsx return ( <div> <Button onClick={() => setData([])}>Clear Data</Button> {/* 可选:添加一个按钮来清除数据 */} <Line data={data} /> </div> ); }; ``` 以上是一个简单的示例,展示了如何使用 React、Ant Design 和 AntV 折线图组件来请求数据并显示折线图。请根据你的实际需求进行适当的调整和修改。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值