react异步组件如何定义使用 标准使用方法

目录

默认导出和命名导出的格式

[默认导出的组件 使用方式](#默认导出的组件 使用方式)

[命名导出的组件 使用方式](#命名导出的组件 使用方式)


默认导出和命名导出的格式

默认导出:

javascript 复制代码
// person.js
const person = {
  name: 'Alice',
  age: 30
};

export default person;

命名导出:

javascript 复制代码
// math.js
export const add = (a, b) => a + b;
export const subtract = (a, b) => a - b;

默认导出的组件 使用方式

导出默认导出的组件

在React中,异步组件(Async Components)是指通过动态加载组件的方式来提高应用程序的性能和减少初始加载时间。通常情况下,当应用程序包含大量组件时,为了避免一次性加载所有组件导致页面加载缓慢,可以将某些组件进行按需加载,即在需要时再动态加载这些组件。

React官方推荐使用React.lazy()函数和Suspense组件来实现异步加载组件

实例代码:

javascript 复制代码
import React, { Suspense } from 'react';

// 使用React.lazy()动态引入组件
const AsyncComponent = React.lazy(() => import('./AsyncComponent'));

function App() {
  return (
    <div>
      <h1>Async Component Example</h1>
      <Suspense fallback={<div>Loading...</div>}>
        <AsyncComponent />
      </Suspense>
    </div>
  );
}

export default App;
  1. 首先使用React.lazy()函数动态引入名为AsyncComponent的组件。然后,在App组件中,我们使用<Suspense>组件包裹需要异步加载的组件,并设置fallback属性来定义在组件加载过程中显示的loading状态。

  2. 当页面渲染时,如果AsyncComponent组件还没有加载完成,<Suspense>组件会显示Loading...,等待异步组件加载完毕后再显示真正的内容。

  3. 注意:React.lazy()只支持默认导出(default exports),如果需要导出命名导出(named exports),可以使用:

    javascript 复制代码
    React.lazy(() => import('./AsyncComponent')
    .then(module => ({ 
    default: module.AsyncComponent 
    }))。
  4. 通过使用React.lazy()和Suspense组件,可以轻松地实现React应用中的异步组件加载,提高应用性能和用户体验。

命名导出的组件 使用方式

导入具有命名导出的组件

这里再次给出一个命名导出的例子:

javascript 复制代码
import React, { Suspense } from 'react';

const AsyncNamedComponent = React.lazy(() =>
  import('./NamedComponent').then(module => ({
    default: module.NamedComponent
  })
);

function App() {
  return (
    <div>
      <h1>Named Export Component Example</h1>
      <Suspense fallback={<div>Loading...</div>}>
        <AsyncNamedComponent />
      </Suspense>
    </div>
  );
}

export default App;
相关推荐
里欧跑得慢41 分钟前
CSS 模块化架构的演进:BEM、CSS Modules 到 CSS-in-JS 的反思
前端·css·flutter·web·css-in-js
IT_陈寒1 小时前
Vue的computed属性把我坑惨了,原来我一直用错姿势
前端·人工智能·后端
小灰灰搞电子2 小时前
Rust+Slint 实现温度计源码分享
前端·rust·slint
计算机魔术师2 小时前
面壁智能 OpenBMB 推出 MathForm,面向 Lean 4 数学自动形式化的开源框架、数据集与模型
前端
NeilCarmack2 小时前
Deepseek-harness增加桌面版端序列:第 2 讲 · spawn Electron:当前进程如何“交棒“
前端·javascript·electron
上海魁鲸科技有限公司3 小时前
APS高级排产系统到底有什么用?一文讲清功能、选型与落地建议
前端·microsoft·excel
陈随易3 小时前
Bun v1.4 更新总结:把浏览器、图片、定时任务和工程工具都装进一个运行时
前端·后端·程序员
东风破_4 小时前
TypeScript 高级类型进阶:keyof、Exclude、Record 与类型组合思想
前端·后端·typescript
DS随心转插件5 小时前
Grok生成的html怎么导出——AI导出鸭:大模型结构化输出的“最后一公里”工程化解构
前端·人工智能·ai·html·豆包·deepseek·ai导出鸭
এ慕ོ冬℘゜5 小时前
使用 jQuery 动态渲染表格与状态切换
前端·javascript·jquery