react懒加载

不念不忘少年蓝@ 2023-06-04 12:57 87阅读 0赞

在这里插入图片描述
新建lazy文件夹和lazy/index.js文件,内容如下

  1. import React from 'react';
  2. const asyncComponent = (importComponent) => {
  3. return class extends React.Component {
  4. constructor() {
  5. super();
  6. this.state = {
  7. component: null
  8. }
  9. }
  10. componentDidMount() {
  11. importComponent()
  12. .then(cmp => {
  13. this.setState({ component: cmp.default });
  14. });
  15. }
  16. render() {
  17. const C = this.state.component;
  18. return C ? <C {...this.props} /> : null;
  19. }
  20. }
  21. };
  22. export default asyncComponent;

route/index.js修改如下

  1. import React from 'react';
  2. import {Switch, Route} from "react-router-dom";
  3. import asyncComponent from '../lazy';
  4. import Home2 from '../pages/Home2';
  5. import OnePage from '../pages/OnePage';
  6. import TwoPage from '../pages/TwoPage';
  7. import This from '../pages/This';
  8. import Mount from '../pages/Mount';
  9. import HooksTest1 from '../hooks/test1';
  10. //import HooksUseState from '../hooks/useState';
  11. const HooksUseState = asyncComponent(() => import ('../hooks/useState'));
  12. const Routers = (
  13. <Switch>
  14. <Route path="/" exact component={Home2} />
  15. <Route path="/onePage" component={OnePage} />
  16. <Route path="/twoPage/:id" component={TwoPage} />
  17. <Route path="/this" component={This} />
  18. <Route path="/mount" component={Mount} />
  19. <Route path="/hooksTest1" component={HooksTest1} />
  20. <Route path="/hooksUseState" component={HooksUseState} />
  21. </Switch>
  22. );
  23. export default Routers

//import HooksUseState from ‘…/hooks/useState’;
const HooksUseState = asyncComponent(() => import (’…/hooks/useState’));
修改的就是这两行第一行是普通加载方式、改成第二行就是懒加载了,只需要把import asyncComponent from ‘…/lazy’;引入进来就可以用了,其他页面如果需要就这样改就OK了

发表评论

表情:
评论列表 (有 0 条评论,87人围观)

还没有评论,来说两句吧...

相关阅读

    相关

    为什么要使用懒加载? 当我们进入到某个页面的时候,会有很多的图片,有些图片可能在下面,当我们点进页面但没有滑动全部展示时,其实下面的图片是没有啥作用的,白加载了,还降低网