reactjs - 使用 React.lazy 与 webpack 动态导入?
问题描述
我想知道使用如下“声明”动态导入有什么区别React.lazy()
:
const Component = React.lazy(() => import('./Component'));
或者使用 webpack 的动态导入来执行此操作,如下所述: https ://webpack.js.org/guides/code-splitting/#dynamic-imports
(就我而言,无论如何我都打算在 webpack 中进行捆绑)
解决方案
React.lazy
获取一个返回 Promise 的回调,并返回一个可渲染组件。
Webpacks 动态导入返回一个 Promise,该 Promise 将在加载块时解析,因此,您不能直接渲染它。
你可以重新实现React.lazy
,这是真正的基本实现。
class SomeComponent extends React.Component {
state = {LazyComponent: null};
async componentDidMount() {
const LazyComponent = await import('./path/to/LazyComponent');
this.setState({LazyComponent});
}
render() {
const {LazyComponent} = this.state;
return LazyComponent ? <LazyComponent {...props} /> : null;
}
}
推荐阅读
- python - 有没有办法通过命令发送嵌入图片?
- php - PHP:在没有作曲家的情况下合并 PDF?
- r - 带有两个向量的粘贴 + 斜体
- reference - 我可以将局部变量的所有权和对它们的引用转移给返回的迭代器吗?
- download - 你如何下载彭博盘中数据
- bash - 有没有办法组合两个 bash 命令的输出?
- android - 如何从cordova项目中删除android依赖项
- windows - 如何在 windows (7,10) 中使用 bat 文件启动 jupyter notebook 服务器?
- android - Xamarin Android 问题通过 HTTPS 连接到具有自签名证书的站点:“未找到证书路径的信任锚。”
- swift - URLSessionDataTask 忽略 URLRequest 的 httpMethod 属性