javascript - React:避免在路由上重新渲染相同的组件
问题描述
我有一个包含 10 个图表的屏幕(使用 recharts.org)——单击图表时,我想将路线从http://localhost:3000/charts切换到http://localhost:3000/charts/first并且简单让第一个图表全屏显示,但没有重新渲染,因为任何数据都不会改变。
关于如何实现这一目标的任何建议?
解决方案
做到这一点的唯一方法(至少在我以前的经验中)是将图表与路线处于同一水平(带有一些条件......),如果您不需要它,您可以更改路线地方......问题是它没有为网格/弹性提供太大的灵活性,但它可以工作:P(在我的情况下,我选择的图表总是在顶部,所以它非常适合,你可以尝试一些基于条件的样式位置,但我担心它会重新渲染)
<Route path="/charts" >
{history.pathname === '/charts/first' && <Chart data ..../>}
{history.pathname === '/charts/second' && <Chart data ..../>}
<Route path="/charts/first" >
<h1> Up you have the unRendered graph </h1>
</Route>
</Route>
*
Chart 是任何 rechart 图表(条形图,饼图 ...)的包装器,并具有 REACT MEMO IMPLEMENTED
*
如果您需要更多帮助,我花了几天时间解决这个问题,请在此处发表评论
推荐阅读
- javascript - 从 mousemove 事件中获得更精确的目标选择
- python - Django-如何获取与另一个相关的模型的内容?
- c - 打印字符串时出现分段错误
- node.js - 如何用猫鼬填充以下代码?
- excel - 获取 XML 中的节点值
- java - 如何使用 cloudhopper 异步发送 DeliverSmResp
- python - 如何提高在 matplotlib 中绘制 DICOM 的速度
- heroku - heroku 托管存储库的法律背景
- c++ - 尽管给出了正确的输出,但 CodeJam 不接受我的解决方案(育儿合作退货问题)
- oop - 图书馆应用场景中的 DDD、Aggregate Root 和实体