首次渲染时,React Recharts柱状
P粉043432210
P粉043432210 2023-07-28 15:09:12
[React讨论组]
<p><br /></p> <pre class="brush:php;toolbar:false;">import React, { Fragment, useCallback } from "react"; import { BarChart, Bar, ResponsiveContainer, Cell, LabelList, YAxis, } from "recharts"; import { fontSizes, textColors } from "styles/theme"; const CustomLabelImage = (props: any) =&gt; { const { x, y, value } = props; return ( &lt;Fragment key={`${Math.random()}`}&gt; &lt;image x={+x! - 5} clipPath={"circle(40%)"} y={y - 105} width={55} height={55} href={value} /&gt; &lt;/Fragment&gt; ); }; const CustomLabel = (props: any) =&gt; { const { x, y, value } = props; return ( &lt;Fragment key={`${Math.random()}`}&gt; &lt;text x={x} y={y} className="grotesk" style={{ fontWeight: 600, fontSize: fontSizes.f20, }} dx={10} dy={-10} textAnchor="top" fill={textColors.sceptreBlue} &gt; {value} &lt;/text&gt; &lt;/Fragment&gt; ); }; const CustomLabelName = (props: any) =&gt; { const { x, y, value } = props; return ( &lt;Fragment key={`${Math.random()}`}&gt; &lt;text x={x} y={y} className="grotesk" style={{ fontWeight: 300, fontSize: fontSizes.f10, }} dx={-4} dy={-35} textAnchor="top" fill={textColors.sceptreBlue} &gt; {value?.split(" ")[0]} {value?.split(" ")[1]?.slice(0, 1)} &lt;/text&gt; &lt;/Fragment&gt; ); }; export default function BarChartRedList({ data, color, }: { data: { time: string; lost: number; avatar?: string }[]; withLabel?: boolean; withAvatar?: boolean; color?: string; }) { const renderItems = useCallback(() =&gt; { return ( &lt;Fragment&gt; {data.map((item, index) =&gt; { return ( &lt;Fragment key={`${item.lost}_${index}`}&gt; &lt;LabelList dataKey="avatar" position="top" key={`cell3-${index}`} width={100} offset={10} content={&lt;CustomLabelImage /&gt;} /&gt; &lt;LabelList dataKey="time" key={`cell2-${index}`} position="top" offset={10} width={100} content={&lt;CustomLabelName /&gt;} /&gt; &lt;LabelList dataKey="lost" position="top" key={`cell1-${index}`} offset={5} width={"100px"} content={&lt;CustomLabel /&gt;} /&gt; &lt;Cell radius={8} key={`cell-${index}`} width={40} offset={20} fill="url(#barGradient)" /&gt; &lt;/Fragment&gt; ); })} &lt;/Fragment&gt; ); }, [data]); return ( &lt;div&gt; &lt;ResponsiveContainer height={350}&gt; &lt;BarChart width={500} height={200} data={data} margin={{ top: 120, right: 0, left: 0, bottom: 20, }} &gt; &lt;defs&gt; &lt;linearGradient id="barGradient" x1="0" y1="0" x2="0" y2="1"&gt; &lt;stop offset="5%" stopColor={color} stopOpacity={1} /&gt; &lt;stop offset="95%" stopColor={color} stopOpacity={0.2} /&gt; &lt;/linearGradient&gt; &lt;/defs&gt; &lt;Bar yAxisId="left" dataKey="lost"&gt; {renderItems()} &lt;/Bar&gt; &lt;/BarChart&gt; &lt;/ResponsiveContainer&gt; &lt;/div&gt; ); }</pre> <p>在窗口加载后的第一次点击按钮之后,</p><p>我尝试使用图片渲染柱状图,但结果并不如我预期的那样。在窗口加载后的第一次渲染中,图片和文本不可见,但在进行一些操作后它们会变得可见。我无法解决这个问题。请帮我找出如何解决这个问题。</p><p>我的包版本是:"recharts": "^2.4.3", "next": "13.4.7", "react": "18.2.0"。</p><p><br /></p>
P粉043432210
P粉043432210

全部回复(1)
P粉237689596

经过一些研究,我找到了解决方案。

<Bar 
   yAxisId="left"
   dataKey="lost"
   isAnimationActive={false} //added this
>
  {renderItems()}
</Bar> 
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号