关于react里使用Ant Design Charts统计图组件的多次渲染bug的解决方法

在react项目里使用 Ant Design Charts 的统计图组件时,在同一个页面,每次在其他隔离组件里修改useState里不属于统计图组件的数据时,都会导致统计图组件重新渲染,这时候可以使用useMemo来解决这个多次渲染的问题,缓存统计图的渲染,仅当 data 值发生改变才会重新渲染 。

import { Line } from '@ant-design/charts';

function Index(props) {
    const [dates, setDates] = useState([]);
    const [dayCountList, setDayCountList] = useState([]);

    const config1 ={
	    // data: dayCountList,
	    smooth: true,
        xField: 'date',
        yField: 'total',
        xAxis: {
          title: {
            text: '日期',
            position: 'end',
            autoRotate: true
          },
          // type: 'time',
          label: {
            // 数值格式化为千分位
            formatter: (v) => moment(v).format('YYYY-MM-DD')
          },
        }, 
        yAxis: {
          title: {
            text: '打开次数',
            position: 'end',
            autoRotate: true
          },
        }
    };

 
    const changeData = (num) => {
        setDates([num])
    })

    return <div>
        <Button type="primary" onClick={() => changeData(1)}>近7天</Button>
        {
            useMemo(() => <Line {...config} data={dayCountList}/>, [dayCountList])
        }
    </div>
}

原来不加useMemo的话,每次点击一次 按钮触发changeDate都会导致Line组件重新渲染,现在加上useMemo之后,只有dayCountList变化的时候,才会重新渲染Line组件。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值