国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

性能優(yōu)化-react路由懶加載和組件懶加載

這篇具有很好參考價值的文章主要介紹了性能優(yōu)化-react路由懶加載和組件懶加載。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

背景

隨著項目越來越大,打包后的包體積也越來越大,嚴重影響了首屏加載速度,需要對路由和組件做懶加載處理

主要用到了react中的lazy和Suspense。

廢話不多說,直接上干貨

路由懶加載

核心代碼

import React, { lazy, Suspense } from "react";
const loading = () => <h3>loading....</h3>;
const Caidan1 = lazy(() => import("@/pages/mud1/caidan1"));

const meunRoutes = [
  {
    name: "模塊1",
    path: "/m1",
    icon: <AppstoreOutlined />,
    children: [
      {
        name: "gltf模型",
        path: "/m1/caidan12",
        icon: <AppstoreOutlined />,
        element: (
          <Suspense fallback={loading()}>
            <Caidan1 />
          </Suspense>
        ),
      },
    // 。。。。

配合路由表的完整例子

// 路由表
import React, { lazy, Suspense } from "react";
import Home from "../pages/home";
import Layout from "@/components/Layout";

const loading = () => <h3>loading....</h3>;

const Caidan1 = lazy(() => import("@/pages/mud1/caidan1"));
const Caidan2 = lazy(() => import("@/pages/mud1/caidan2"));
// 404頁面
const NotFound = () => <h1>**** 404 ****</h1>;

const meunRoutes = [
  {
    name: "模塊1",
    path: "/m1",
    icon: <AppstoreOutlined />,
    children: [
      {
        name: "gltf模型",
        path: "/m1/caidan12",
        icon: <AppstoreOutlined />,
        element: (
          <Suspense fallback={loading()}>
            <Caidan1 />
          </Suspense>
        ),
      },
      {
        name: "模型動畫",
        path: "/m1/caidan13",
        icon: <AppstoreOutlined />,
        element: (
          <Suspense fallback={loading()}>
            <Caidan2 />
          </Suspense>
        ),
      },
    ],
  },
];

// 配置路由表
const routes = [
  {
    path: "/",
    element: <Navigate to="/home" />,
  },
  {
    path: "/home",
    element: <Home />,
  },
  {
    path: "/",
    element: <Layout />,
    children: handleMenuRoutes(meunRoutes),
  },
  { path: "*", element: <NotFound /> },
];

// 處理menu routes
function handleMenuRoutes(arr) {
  let res = [];
  arr.forEach((item) => {
    if (item.children && item.children.length > 0) {
      item.children.forEach((yitem) => {
        let obj = {
          path: yitem.path,
          element: yitem.element,
        };
        res.push(obj);
      });
    }
  });
  return res;
}

const AppRouter = () => useRoutes([...routes]);
export { AppRouter, meunRoutes };

組件懶加載

import { useEffect, useState, lazy, Suspense } from "react";

const TestCpn = lazy(() => import("@/components/testCpn"));
const Home = () => {
  const [show, setShow] = useState(false);

  function fn() { setShow(true)}

  return (
    <div>
      <button onClick={fn}>加載大組件</button>
      {show && (
        <Suspense>
          <TestCpn />
        </Suspense>
      )}
    </div>
  );
};
export default Home;

效果
組件加載前
性能優(yōu)化-react路由懶加載和組件懶加載,React,react.js,javascript,前端
組件懶加載后
性能優(yōu)化-react路由懶加載和組件懶加載,React,react.js,javascript,前端
這樣就會大大加快首屏加載速度文章來源地址http://www.zghlxwxcb.cn/news/detail-625223.html

到了這里,關(guān)于性能優(yōu)化-react路由懶加載和組件懶加載的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 前端工程化實戰(zhàn):React 模塊化開發(fā)、性能優(yōu)化和組件化實踐

    前端工程化實戰(zhàn)是指通過組織工作流程、使用工具和技術(shù)來提高前端開發(fā)效率和質(zhì)量的一種方法。常見的前端工程化實踐包括模塊化開發(fā)、自動化構(gòu)建、代碼檢查和測試、性能優(yōu)化等。下面將簡要介紹模塊化開發(fā)、性能優(yōu)化和組件化實踐。 模塊化開發(fā) 在 React 中實現(xiàn)模塊化開

    2023年04月10日
    瀏覽(100)
  • react 11之 router6路由 (兩種路由模式、兩種路由跳轉(zhuǎn)、兩種傳參與接收參數(shù)、嵌套路由,layout組件、路由懶加載)

    react 11之 router6路由 (兩種路由模式、兩種路由跳轉(zhuǎn)、兩種傳參與接收參數(shù)、嵌套路由,layout組件、路由懶加載)

    npm i react-router-dom 兩種模式 Router:所有路由組件的根組件,包裹路由的最外層容器 Link:跳轉(zhuǎn)路由組件 Routes :用于定義和渲染路由規(guī)則( 用于替換 Switch 組件) Route:路由規(guī)則匹配組件,顯示當前規(guī)則對應(yīng)的組件 exact = 精確匹配,只有當 path 和 pathname 完全匹配時才會展示該路由

    2024年02月12日
    瀏覽(26)
  • React 組件懶加載

    只有不斷學習和成長,才能適應(yīng)這個快速變化的世界。 React 中懶加載 Lazy 與 Suspense 需要搭配使用。 React.lazy 定義: React.1azy 函數(shù)能讓你像渲染常規(guī)組件一樣處理動態(tài)引入的組件。其實就是懶加載。 為什么代碼要分割? 當你的程序越來越大,代碼量越來越多。一個頁面上堆積

    2024年02月05日
    瀏覽(16)
  • 理解React頁面渲染原理,如何優(yōu)化React性能?

    當使用React編寫應(yīng)用程序時,可以使用JSX語法來描述用戶界面的結(jié)構(gòu)。JSX是一種類似于HTML的語法,但實際上它是一種JavaScript的擴展,用于定義React元素。React元素描述了我們想要在界面上看到的內(nèi)容和結(jié)構(gòu)。 在運行React應(yīng)用程序時,JSX會被轉(zhuǎn)換成真實的DOM元素,這個過程主要

    2024年02月08日
    瀏覽(73)
  • 5.React.memo 性能優(yōu)化

    性能優(yōu)化, React.memo 2. React.memo類似純組件,可提高組件性能表現(xiàn)(類組件PureComponent)

    2024年02月11日
    瀏覽(24)
  • React Native性能優(yōu)化指南

    React Native性能優(yōu)化指南

    本文將介紹在React Native開發(fā)中常見的性能優(yōu)化問題和解決方案,包括ScrollView內(nèi)無法滑動、熱更新導致的文件引用問題、高度獲取、強制橫屏UI適配、低版本RN適配iOS14、緩存清理、navigation參數(shù)取值等。通過代碼案例演示和詳細說明,幫助開發(fā)者更好地理解和解決React Native中的

    2024年01月23日
    瀏覽(48)
  • 【前端知識】React 基礎(chǔ)鞏固(二十三)——React 性能優(yōu)化 SCU相關(guān)

    React 的渲染流程 JSX - 虛擬 DOM - 真實 DOM React 的更新流程 props/state 改變 - render函數(shù)重新執(zhí)行 - 產(chǎn)生新的DOM樹 - 新舊DOM樹進行diff - 計算出差異進行更新 - 更新到真實的DOM React 在 props 或 state 發(fā)生改變時,會調(diào)用 React 的 render 方法,會創(chuàng)建一顆不同的樹 React 需要基于這兩顆不同的

    2024年02月15日
    瀏覽(38)
  • React Hooks ——性能優(yōu)化Hooks

    Hooks從語法上來說是一些函數(shù)。這些函數(shù)可以用于在函數(shù)組件中引入狀態(tài)管理和生命周期方法。 簡潔 從語法上來說,寫的代碼少了 上手非常簡單 基于函數(shù)式編程理念,只需要掌握一些JavaScript基礎(chǔ)知識 與生命周期相關(guān)的知識不用學,react Hooks使用全新的理念來管理組件的運作

    2024年02月06日
    瀏覽(25)
  • React跨路由組件動畫

    React跨路由組件動畫

    我們是袋鼠云數(shù)棧 UED 團隊,致力于打造優(yōu)秀的一站式數(shù)據(jù)中臺產(chǎn)品。我們始終保持工匠精神,探索前端道路,為社區(qū)積累并傳播經(jīng)驗價值。 本文作者:佳嵐 對于普通的 React 動畫,我們大多使用官方推薦的 react-transition-group ,其提供了四個基本組件 Transition、CSSTransition、S

    2024年02月08日
    瀏覽(17)
  • React性能優(yōu)化之Memo、useMemo

    React 的渲染機制,組件內(nèi)部的 state 或者 props 一旦發(fā)生修改,整個組件樹都會被重新渲染一次,即時子組件的參數(shù)沒有被修改,甚至無狀態(tài)組件 會造成性能浪費 React.memo 是 React 官方提供的一個高階組件,用于緩存我們的需要優(yōu)化的組件 React 中的組件被設(shè)計為在狀態(tài)或 props 值

    2024年02月14日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包