javascript React -动态导入非默认组件或函数

omqzjyyz  于 2023-04-04  发布在  Java
关注(0)|答案(1)|浏览(112)

我已经看到我们可以使用以下命令动态导入默认组件:

const MyComponent = React.lazy(() => import('./myPath'));

我们可以使用<MyComponent/>来渲染它。据我所知,这种方法只允许从指定路径导入默认组件。
我的问题是:如何动态导入从myPath(非默认)导出的其他组件或函数?

jmp7cifd

jmp7cifd1#

React.lazy目前只支持默认导出。文档中的建议解决方案是:
如果要导入的模块使用命名导出,则可以创建一个中间模块,将其重新导出为默认值。这可以确保树摇动继续工作,并且不会拉入未使用的组件。
举个例子

// ManyComponents.js
export const MyComponent = /* ... */;
export const MyUnusedComponent = /* ... */;

// MyComponent.js
export { MyComponent as default } from "./ManyComponents.js";

// MyApp.js
import React, { lazy } from 'react';
const MyComponent = lazy(() => import("./MyComponent.js"));

另一种解决方案是添加一些如下所示的样板文件。这样,就不需要中间组件:

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

或者,你可以像这样使用react-lazily

const { MyComponent } = lazily(() => import('./MyComponent'))

相关问题