reactjs - 处理 React 页面在重新渲染时闪烁的方法(功能组件)
问题描述
很多事情导致我的 React 功能组件闪烁,因为新数据来自各种获取,并且所有内容都不断地从上到下重新绘制。
例如,如果我有一个顶级App
组件,其中某处包含一个MyForm
组件,并且在(作为道具传递,)App
中执行我依赖的 DB Lookups 的初始获取,则在重绘自身时将闪烁收到新的道具值。MyForm
lookups={lookups}
MyForm
应用程序
useEffect(() => {
fetchLookups();
}, []);
const fetchLookups = async () => {
const url = '/api/general/lookups';
try {
const responseLookups = await axios.get(url);
setLookups(responseLookups.data);
}
}
MyForm - 会闪烁 - 请注意,我还必须检查来自的 Non-NULL Fetch 结果App
,这很痛苦
<Form.Control
value={props.lookups &&
props.lookups.filter(item => item.id === 30)
.map((item, index) => {
return (
item.description
);
})
/>
此外,在MyForm
组件中,有很多使用 inits/listeners 的useEffect(.., [])
,它们也会导致表单重新渲染。我无法知道所有这些初始化/侦听器的顺序是什么。
所以我的问题是,处理这种闪烁的最佳方法是什么?
- 我可以检测功能组件何时完全呈现,以显示覆盖完整初始化序列的加载微调器吗?
- 我可以以任何方式阻止重新渲染吗?
解决方案
推荐阅读
- python - 使用带有特殊字符的 dict 和 zip 的问题
- javascript - How would i check if a user has changed their nickname?
- amazon-web-services - 用于管理状态数据的 AWS 服务 - dynamodb/step functions/sqs?
- sql - 由于排序规则冲突,无法执行 varchar 值到 varchar 的隐式转换
- go - 通过堡垒主机 SSH
- javascript - 生成与 IPFS-Desktop CID 匹配的 CID 的无节点方式
- r - 识别 R 中所有权的变化
- python - 使用 matplotlib 从 3 列文件中绘制极坐标热图
- google-bigquery - 将表中的数组单元格转换为另一个表中的行
- flutter - 在 runapp 上使用两个更改通知器 Flutter