reactjs - 在 Reactjs 中克隆组件的正确方法是什么?
问题描述
我是 React 的新手。我正在使用 react-chartjs-2 创建折线图。有 6 种不同类型的数据具有相同的结构。我创建了一个折线图组件并克隆了另外 5 个。然后我传递了这样的数据:
let liveChart1 = <LiveChart1
name= {t('chart.30min')}
segmentType = {30}
currentTime={this.state.currentTime30}
predictedTime={this.state.predictedTime30}
density={this.state.density30}
predictedValue={this.state.predictedValue30}
same_anchor_params={this.state.same_anchor_params30}
prev_anchor_params={this.state.prev_anchor_params30}
historyData={this.state.historyData30}
isFirst={this.state.isFirst}
/>
在渲染和更新数据时,由于 6 个图表,它会闪烁 6 次。我有两个问题:
我应该创建 6 个具有相同内容的不同组件还是应该创建 1 个组件,克隆它并像上面一样传递不同的道具
是否有任何方法可以一次渲染 6 个组件或停止重新渲染前一个组件?
这是我正在使用的:
let charts = [
liveChart1, liveChart2, liveChart3, liveChart4, liveChart5, liveChart6
];
{
charts.map((element, index) => {
return (<React.Fragment>{element}</React.Fragment>)
})
}
很抱歉没有提供整个脚本!!!
解决方案
发生这种情况是因为您在单个组件中有 6 个图表,并且当每个图表的状态发生更改时,它会重新渲染所有图表。
最好的方法是为你的图表创建一个子组件,并通过 props 传递你的数据、标题等,这样你就可以重用这个组件,重新渲染问题就会得到解决。
推荐阅读
- javascript - 部署到 Heroku 时,Puppeteer 网络爬虫无法找到选择器
- nim-lang - 如何构建 Nim 库包
- vb.net - Discord bot 不会在嵌入中显示来自其他服务器的表情
- javascript - 为什么 Google 搜索输出 0 上的 429221958243152700-429221958243152682 是 0?
- javascript - 为什么按下按钮时我的旋转动画只工作一次?
- python - 即使只有一个类,有没有办法建立逻辑回归模型?
- android-viewpager - ViewPager2 - onBindViewHolder 被调用两次
- android - 如何为房间数据库中的嵌套对象创建实体类
- javascript - 使用深度优先搜索算法的无限循环误差
- node.js - 如何使用现有变量构建 Graqhql 突变