react里如何做动态加载
动态加载的实现方法
在React中实现动态加载(懒加载)通常使用React.lazy和Suspense组合,或借助第三方库如loadable-components。以下是具体实现方式:
使用React.lazy和Suspense
React.lazy允许动态导入组件,需与Suspense配合处理加载状态。仅支持默认导出的组件。

import React, { Suspense } from 'react';
const LazyComponent = React.lazy(() => import('./LazyComponent'));
function App() {
return (
<Suspense fallback={<div>Loading...</div>}>
<LazyComponent />
</Suspense>
);
}
路由级懒加载
结合React Router实现路由级动态加载:

import { BrowserRouter as Router, Route, Switch } from 'react-router-dom';
const Home = React.lazy(() => import('./routes/Home'));
const About = React.lazy(() => import('./routes/About'));
function App() {
return (
<Router>
<Suspense fallback={<div>Loading...</div>}>
<Switch>
<Route exact path="/" component={Home} />
<Route path="/about" component={About} />
</Switch>
</Suspense>
</Router>
);
}
使用loadable-components
对于更复杂的场景(如服务器端渲染),可使用@loadable/component:
import loadable from '@loadable/component';
const LoadableComponent = loadable(() => import('./Component'), {
fallback: <div>Loading...</div>,
});
function App() {
return <LoadableComponent />;
}
动态加载第三方库
通过动态导入语法按需加载大型库:
useEffect(() => {
import('large-library').then((module) => {
module.init();
});
}, []);
注意事项
- Webpack会自动为动态导入的组件生成单独chunk,需确保构建配置支持代码分割。
- 动态加载可能导致轻微延迟,应设计合适的加载状态(如骨架屏)。
- 在服务器端渲染中,
React.lazy不可用,需使用loadable-components等替代方案。
以上方法可根据具体场景选择,平衡性能与用户体验。






