我有一些代码可以显示活动指示器一段时间,然后渲染昂贵的组件。
这里是代码
class MyComponent extends React.Component{
constructor(){
this.state={isLoading:true,...someOtherStateProps}
}
componentDidMount(){
InteractionManager.runAfterInteractions(()=>{
/* Expensive Calculations*/
this.setState(ps=>({isLoading:false}))
})
}
render(){
if(this.state.isLoading)
return <ActivityIndicator/>
return <ComponentThatRendersALongListOfItems/>
}
}
我的这段代码的问题是,如果存在一个ActivityIndicator,即使将isLoading的状态设置为false,也要花费大量的时间才能真正呈现主视图。如果我将活动指示器替换为返回值null或Loading ...,则我看到的主要组件的延迟很短。我在render方法中放置了2个控制台日志,以确认返回值是来自if部分还是主要部分。我认为,即使在卸载ActivityIndicator之后,它仍会保持动画状态,从而阻止主线程渲染Main组件。有什么帮助或建议吗?