Reactjs 反应延迟渲染
假设我有一个用React编写的选项卡控件组件。只有活动选项卡将被渲染以获得更好的性能(如果渲染所有选项卡,则需要5秒钟,因为大约有20个选项卡,每个选项卡包含大量数据)。当我单击其他选项卡以激活它们时,将呈现它们 除了一个标签外,这个功能非常好用。“特殊”选项卡比其他选项卡大得多,它包含一个有2000行的表,因此React需要3秒钟来呈现它。这使得用户体验非常糟糕:单击选项卡,3秒钟内没有任何事情发生,因为React正在忙于渲染,然后突然出现了一个大表 在没有反应的情况下,我通常会这样做:Reactjs 反应延迟渲染,reactjs,delay,render,Reactjs,Delay,Render,假设我有一个用React编写的选项卡控件组件。只有活动选项卡将被渲染以获得更好的性能(如果渲染所有选项卡,则需要5秒钟,因为大约有20个选项卡,每个选项卡包含大量数据)。当我单击其他选项卡以激活它们时,将呈现它们 除了一个标签外,这个功能非常好用。“特殊”选项卡比其他选项卡大得多,它包含一个有2000行的表,因此React需要3秒钟来呈现它。这使得用户体验非常糟糕:单击选项卡,3秒钟内没有任何事情发生,因为React正在忙于渲染,然后突然出现了一个大表 在没有反应的情况下,我通常会这样做: 在新
setTimeout(render(),50)代码>
我知道我可以用分页的表替换这个巨大的表,所以在同一时间只能呈现有限数量的行。但是我的问题集中在处理需要大量时间渲染的UI组件上。是的,您可以通过提供组件状态来实现类似的功能 添加
getInitialState(返回{loading:true})代码>到您的组件
根据状态更改渲染方法,例如
if (this.state.loading) {
return (
<div className='my-nice-tab-container'>
<div className='loading-state'>Loading...</div>
</div>)
} else {
return (
<div className='my-nice-tab-container'>
<div className='full tab contents'>
{myHugeArray.map(item => ( return
<Item class='one-of-list-of-2000' />
))}
</div>
</div>)
}
然后您的组件应该首先以加载状态进行渲染,然后在50毫秒后加载整个组件。谢谢,我找到了类似的解决方案,因为加载过程有点复杂。但概念是一样的。
componentDidMount() {
var self = this;
setTimeout(() => {
self.setState({loading: false}); }, 50);
}