React Suspense 是一项强大的功能,允许开发人员通过在加载组件或数据时显示后备 UI 来优雅地处理异步渲染。它与 React.lazy、并发渲染 和 数据获取 解决方案(例如 React Query、Relay 或自定义实现)协同工作。
import React, { Suspense } from "react"; const LazyComponent = React.lazy(() => import("./LazyComponent")); function App() { return ( <Suspense fallback={<div>Loading...</div>}> <LazyComponent /> </Suspense> ); } export default App;
import React from "react"; import HeavyComponent from "./HeavyComponent"; function App() { return ( <div> <h1>Main App</h1> <HeavyComponent /> </div> ); } export default App;
HeavyComponent 同步加载,增加了初始加载时间。
import React, { Suspense } from "react"; const HeavyComponent = React.lazy(() => import("./HeavyComponent")); function App() { return ( <div> <h1>Main App</h1> <Suspense fallback={<div>Loading Heavy Component...</div>}> <HeavyComponent /> </Suspense> </div> ); } export default App;
现在,HeavyComponent 仅在需要时加载,在加载过程中显示回退。
import React, { Suspense } from "react"; const ComponentA = React.lazy(() => import("./ComponentA")); const ComponentB = React.lazy(() => import("./ComponentB")); function App() { return ( <div> <h1>Main App</h1> <Suspense fallback={<div>Loading Components...</div>}> <ComponentA /> <ComponentB /> </Suspense> </div> ); } export default App;
后备 UI 将显示,直到两个组件完成加载。
当与 Relay 或 React Query 等库集成时,React Suspense 对于异步数据获取也很有用。
import React, { Suspense } from "react"; import { useQuery } from "react-query"; function DataComponent() { const { data } = useQuery("fetchData", fetchData); return <div>{data}</div>; } function App() { return ( <Suspense fallback={<div>Loading data...</div>}> <DataComponent /> </Suspense> ); } export default App;
如果在加载组件或数据的过程中发生错误,React Suspense 不提供内置的错误处理。为此,请使用错误边界。
import React, { Suspense } from "react"; const LazyComponent = React.lazy(() => import("./LazyComponent")); function App() { return ( <Suspense fallback={<div>Loading...</div>}> <LazyComponent /> </Suspense> ); } export default App;
您可以嵌套多个 Suspense 组件,以对后备状态进行精细控制。
import React from "react"; import HeavyComponent from "./HeavyComponent"; function App() { return ( <div> <h1>Main App</h1> <HeavyComponent /> </div> ); } export default App;
React Suspense 是一个用于管理 React 应用程序中异步渲染的多功能工具。它简化了加载状态的处理,通过延迟加载增强了性能,并与代码分割和错误处理技术相结合,创造了更流畅的用户体验。
以上是如何在 React 中使用 Suspense 来改进异步渲染的详细内容。更多信息请关注PHP中文网其他相关文章!