Похоже, что библиотека не поддерживает обертывание радиальной диаграммы с FlexibleXYPlot или XYPlot (см. Проблему Responsive RadialChart "response-vis": "^ 1.7.7" , никогда не решается, и яне может заставить его работать), поверх этой диаграммы RadialChart требуется ширина и высота для смещения.
Теперь на основе следующих проблем FlexibleXYPlot требует высотных подпорок Для решения этой проблемы был сделан pr, но он не был объединен.Основываясь на реализации Алекса Сандиярова , следующий код может быть использован для того, чтобы сделать круговую диаграмму отзывчивой:
import React, { Component } from 'react';
import ResizeObserver from 'resize-observer-polyfill';
import { RadialChart } from 'react-vis';
class App extends Component {
constructor(props) {
super(props);
this.state = {
height: 0,
width: 0
};
}
componentDidMount() {
//When mounted set our start size
this.setSize();
//Lets observe changes with resize-observer-polyfill
this.observer = new ResizeObserver(entries => this.setSize());
//Lets observe our node
this.observer.observe(this.node);
}
componentWillUnmount() {
this.observer.disconnect();
}
setSize = () => {
const { height, width } = this.node.getBoundingClientRect();
this.setState({ height, width });
};
render() {
const { height, width } = this.state;
return (
<div
ref={node => {
if (node) {
this.node = node;
}
}}
style={{ width: '100vw', height: '100vh' }}
>
<RadialChart
className={'donut-chart-example'}
getAngle={d => d.theta}
data={[
{ theta: 2, className: 'custom-class' },
{ theta: 6 },
{ theta: 2 },
{ theta: 3 },
{ theta: 1 }
]}
width={width}
height={height}
padAngle={0.04}
colorType="literal"
/>
</div>
);
}
}
export default App;
Надеюсь, это поможет вам или укажет вам полезное направление:)