场景需要很长时间才能加载到componentDidMount

时间:2019-09-02 14:50:32

标签: react-native

在React Native中,我试图在componentDidMount中运行较长的过程:

  async componentDidMount() {
    const long= await new generateLongProcess();
    this.setState({ long });
  }

我希望该页面在长时间运行之前可以加载,但是我正面临着其他页面的长时间暂停,在此页面加载之前,最后一次加载了长时间。

为什么此页面需要几秒钟的加载时间?因为我认为所有组件都在运行较长的过程之前就已加载。

2 个答案:

答案 0 :(得分:1)

我不知道您使用的长流程函数会发生什么。但是要猜测为何Lord这么长,可能是因为SetState。由于您是从“ componentDidMount”函数调用它的,因此rendering会重复执行两次。

  

注意:在某些情况下,componentDidMount()称为setState()   在这种情况下,render()将被调用两次,但是   用户将无法看到中间课程。这种方法   很容易导致性能问题,需要引起注意。

答案 1 :(得分:1)

您的componentDidMount函数是一个异步函数。并且您已经在新的generateLongProcess()上使用了wait;

因此componentDidMount将等待,直到您的generateLongProcess函数完成。因此,请检查该功能。如果您不想等待,则只需删除2个关键字async并等待。但是,如果您需要获取长变量值,则必须等待或必须在Promise中完成。如果您向我们展示generateLongProcess函数代码,将会更好。