React - 等待页面加载的正确方法?
React - correct way to wait for page load?
在 React JS 中,在触发任何代码之前等待页面加载的正确方法是什么?
场景:
登录服务对用户进行身份验证,然后将他们(使用 cookie)重定向到 React App。
然后,React App 会立即搜索 cookie 并根据端点对其进行验证。
但我遇到的问题是,当用户在登录服务中进行身份验证,然后转发到 React 应用程序时,应用程序加载速度如此之快,甚至还没有加载 cookie。
触发代码的正确方法是什么?我尝试在 componentDidMount() 中包装,但没有用!
我建议您在应用程序的主要组件(通常 App.jsx)中使用一个状态来控制加载。当您启动应用程序时,状态将为真,只有在检查完所有您需要检查的内容后,状态才会变为假。如果状态正在加载,你将显示一个微调器或任何你想要的东西,当它没有加载时,网站:
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
)
}
如有任何疑问,请告诉我。
你可以使用 Suspense 和 lazy :)
import React, { Suspense } from 'react';
const OtherComponent = React.lazy(() => import('./OtherComponent'));
function MyComponent() {
return (
<div>
<Suspense fallback={<div>loading...</div>}>
<OtherComponent />
</Suspense>
</div>
);
}
在 React JS 中,在触发任何代码之前等待页面加载的正确方法是什么?
场景: 登录服务对用户进行身份验证,然后将他们(使用 cookie)重定向到 React App。 然后,React App 会立即搜索 cookie 并根据端点对其进行验证。
但我遇到的问题是,当用户在登录服务中进行身份验证,然后转发到 React 应用程序时,应用程序加载速度如此之快,甚至还没有加载 cookie。
触发代码的正确方法是什么?我尝试在 componentDidMount() 中包装,但没有用!
我建议您在应用程序的主要组件(通常 App.jsx)中使用一个状态来控制加载。当您启动应用程序时,状态将为真,只有在检查完所有您需要检查的内容后,状态才会变为假。如果状态正在加载,你将显示一个微调器或任何你想要的东西,当它没有加载时,网站:
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
)
}
如有任何疑问,请告诉我。
你可以使用 Suspense 和 lazy :)
import React, { Suspense } from 'react';
const OtherComponent = React.lazy(() => import('./OtherComponent'));
function MyComponent() {
return (
<div>
<Suspense fallback={<div>loading...</div>}>
<OtherComponent />
</Suspense>
</div>
);
}