程式碼分割是一種透過將 JavaScript 套件分解為更小的區塊來最佳化 React 應用程式效能的技術。 React 提供了 React.lazy 作為在元件層級實現程式碼拆分的內建方式。這允許您根據需要動態載入應用程式的各個部分。
const LazyComponent = React.lazy(() => import('./LazyComponent')); function App() { return ( <React.Suspense fallback={<div>Loading...</div>}> <LazyComponent /> </React.Suspense> ); }
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...</div>}> <HeavyComponent /> </Suspense> </div> ); } export default App;
現在,HeavyComponent 僅在渲染時才載入。這減少了初始包的大小。
程式碼分割與 React Router 無縫協作,動態載入路由元件。
import React, { Suspense } from "react"; import { BrowserRouter as Router, Routes, Route } from "react-router-dom"; const Home = React.lazy(() => import("./Home")); const About = React.lazy(() => import("./About")); const Contact = React.lazy(() => import("./Contact")); function App() { return ( <Router> <Suspense fallback={<div>Loading Page...</div>}> <Routes> <Route path="/" element={<Home />} /> <Route path="/about" element={<About />} /> <Route path="/contact" element={<Contact />} /> </Routes> </Suspense> </Router> ); } export default App;
透過邏輯拆分在單一應用程式中延遲載入多個元件。
import React, { Suspense, useState } from "react"; const ComponentA = React.lazy(() => import("./ComponentA")); const ComponentB = React.lazy(() => import("./ComponentB")); function App() { const [showA, setShowA] = useState(false); const [showB, setShowB] = useState(false); return ( <div> <button onClick={() => setShowA(true)}>Load Component A</button> <button onClick={() => setShowB(true)}>Load Component B</button> <Suspense fallback={<div>Loading...</div>}> {showA && <ComponentA />} {showB && <ComponentB />} </Suspense> </div> ); } export default App;
React 不提供針對失敗匯入的內建錯誤處理。您可以使用錯誤邊界來處理此類情況。
const LazyComponent = React.lazy(() => import('./LazyComponent')); function App() { return ( <React.Suspense fallback={<div>Loading...</div>}> <LazyComponent /> </React.Suspense> ); }
使用 React.lazy 進行程式碼分割是提高應用程式效能的有效方法。透過動態載入元件,可以減少初始載入時間並增強使用者體驗。當與 Suspense 和適當的錯誤處理相結合時,它為建立高效、可擴展的 React 應用程式提供了一個強大的解決方案。
以上是使用 React.lazy 進行程式碼分割:增強應用程式的效能的詳細內容。更多資訊請關注PHP中文網其他相關文章!