在React Native中,我试图在componentDidMount中运行较长的过程:
async componentDidMount() {
const long= await new generateLongProcess();
this.setState({ long });
}
我希望该页面在长时间运行之前可以加载,但是我正面临着其他页面的长时间暂停,在此页面加载之前,最后一次加载了长时间。
为什么此页面需要几秒钟的加载时间?因为我认为所有组件都在运行较长的过程之前就已加载。
答案 0 :(得分:1)
我不知道您使用的长流程函数会发生什么。但是要猜测为何Lord这么长,可能是因为SetState
。由于您是从“ componentDidMount
”函数调用它的,因此rendering
会重复执行两次。
注意:在某些情况下,
componentDidMount()
称为setState()
在这种情况下,render()
将被调用两次,但是 用户将无法看到中间课程。这种方法 很容易导致性能问题,需要引起注意。
答案 1 :(得分:1)
您的componentDidMount函数是一个异步函数。并且您已经在新的generateLongProcess()上使用了wait;
因此componentDidMount将等待,直到您的generateLongProcess函数完成。因此,请检查该功能。如果您不想等待,则只需删除2个关键字async并等待。但是,如果您需要获取长变量值,则必须等待或必须在Promise中完成。如果您向我们展示generateLongProcess函数代码,将会更好。