首页 > 解决方案 > 访问 react-chartjs 饼图的一部分

问题描述

我正在尝试使用react-chartjs-2.
但是,我希望其中一个切片“弹出”,或者看起来比其他切片大:

我正在尝试创建的饼图的可视化示例

因此,我试图访问饼图中的切片之一并修改其outerRadius属性。


我在Stack OverflowGithub都遇到了多个类似的问题,这帮助我想出了这个:

import { Pie } from 'react-chartjs-2';

<Pie
    data={data}
    options={options}
    getElementsAtEvent={(elems) => {
        // Modify the size of the clicked slice
        elems[0]['_model'].outerRadius = 100;
    }}
/>

但是,我没有找到任何关于在没有用户单击它的情况下弹出切片的信息。

标签: javascriptreactjschartschart.jsreact-chartjs

解决方案


在查看Pie组件的引擎盖后,我最终找到了答案。
你可以在里面找到它componentDidMount()

import React, { Component } from 'react';
import { Pie } from 'react-chartjs-2';

class PieChart extends Component {
    componentDidMount() {
        const change = {
            sliceIndex: 0,
            newOuterRadius: 100
        }
        const meta = this.pie.props.data.datasets[0]._meta;
        meta[Object.keys(meta)[0]]
            .data[change.sliceIndex]
            ._model
            .outerRadius = change.newOuterRadius;
    }

    render() {
        const data = {
            type: 'pie',
            datasets: [ { data: [10, 20, 30] } ],
            labels: ['a', 'b', 'c'],
        };
        const options = {};

        return <Pie
            ref={(self) => this.pie = self}
            data={data}
            options={options}
        />
    }
}

export default PieChart;

推荐阅读