如何在 React.js 中调整 Chart.JS 元素的大小?

Tar*_*are 5 html javascript css reactjs chart.js

我有一个 React 组件Webstats,它从react-chartjs-2库返回一个甜甜圈图。下面是代码的样子:

const Webstats = () => {
  //code to create chart.
  return <Doughnut data={pd} />;
}
Run Code Online (Sandbox Code Playgroud)

我在另一个名为Dashboard. 我想在注销按钮旁边显示图表。两者应该在同一行。flex为此,我使用了 css 的属性。

const rowC = {
  display: "flex",
  flexDirection: "row"
};

const Dashboard = () => {
  return (
    <div style={rowC}>
      <Webstats />
      <Link to="/">
        <div>
          <button onClick={auth.logout}>Logout</button>
        </div>
      </Link>
    </div>
  );
};

export default Dashboard;
Run Code Online (Sandbox Code Playgroud)

但问题是,与注销按钮相比,图表大小太大了。

截屏

我想让图表尺寸变小,大约是<div style={rowC}>. 我试过这些东西:

return <Doughnut data={pd} width="30%"/>;
Run Code Online (Sandbox Code Playgroud)

return (
    <div style={rowC}>
      <Webstats width="30%" />
      // rest of html
)
Run Code Online (Sandbox Code Playgroud)

并且

return (
    <div width="30%">
      <Doughnut data={pd} />
    </div>
  );
Run Code Online (Sandbox Code Playgroud)

但是这些都没有给我想要的结果。如何将图表大小调整为 30% 的宽度(和高度自动调整)<div style={rowC}>

tec*_*995 10

ChartJS文档指出,您需要将其设置maintainAspectRatio为 false 才能使用您传递到图表中的宽度和高度道具。

为了让 Chart.js 遵守自定义大小,您需要将其设置maintainAspectRatio为 false。

<Doughnut
  data={data}
  width={"30%"}
  options={{ maintainAspectRatio: false }}
/>
Run Code Online (Sandbox Code Playgroud)

  • 这对我来说并没有完全解决问题。对于其他卡住的人,您可能需要创建一个专用容器(例如 ```&lt;div class="chart-container" style="position:relative; height:40vh; width:80vw"&gt; &lt;Doughnut/&gt; &lt;/div &gt;``` )请参阅此文档部分以获取更多信息:https://www.chartjs.org/docs/latest/general/responsive.html (8认同)