React - 等待页面加载的正确方法?

js-*_*ner 8 javascript pageload reactjs pageloadstrategy

在 React JS 中,在触发任何代码之前等待页面加载的正确方法是什么?

场景:登录服务对用户进行身份验证,然后将他们(使用 cookie)重定向到 React 应用程序。然后,React 应用程序立即搜索 cookie 并针对端点对其进行验证。

但我遇到的问题是,当用户在登录服务中进行身份验证,然后转发到 React App 时,该应用程序在 cookie 加载之前就加载得如此之快。

触发代码的正确方法是什么?我尝试包装在 componentDidMount() 中,但没有成功!

Car*_*teu 8

我建议您在应用程序的主要组件(通常是 App.jsx)中使用一个状态来控制加载。当您启动应用程序时,状态将为 true,只有在检查了您需要检查的所有内容后,状态才会变为 false。如果状态正在加载,您将显示一个旋转器或任何您想要的内容,当状态未加载时,网站:

class App extends Component {
    constructor(props) {
        super(props);
        this.state = { loading: true }
    }


    componentDidMount () {
       checkToken()
           .then(() => this.setState({ loading: false });

    }

    if (loading) {
        return <Spinner /> // or whatever you want to show if the app is loading
    }
    return (
        ...rest of you app
    )
}
Run Code Online (Sandbox Code Playgroud)

如有任何疑问请告诉我。


小智 7

你可以使用悬念和懒惰:)

   import React, { Suspense } from 'react';
    
    const OtherComponent = React.lazy(() => import('./OtherComponent'));
    
    function MyComponent() {
      return (
        <div>
          <Suspense fallback={<div>loading...</div>}>
            <OtherComponent />
          </Suspense>
        </div>
      );
    }
Run Code Online (Sandbox Code Playgroud)