• Route in React


    谈谈 route in AntD

    路由分组与懒加载

    路由分组,可以借助于前置匹配exact={false},懒加载用于code split webpack 打包时减少初始包的体积,提供性能


    路由分组

    假设我们有一下路由

    /parent/child1
    /parent/child2
    /parent/child3
    

    那么我们可以把child1-3路由分为一组,全部挂于parent 路由下, 代码如下:
    非懒加载的代码, 改代码直接被打包到根/父路由

    \ 
    //Native
    const Parent_Lazy=()=>{
        return (
            <Suspense fallback={<Loading/>}>
              {
                React.createElement(React.lazy(()=>import('./lazy')))
              }
            </Suspense>
        )
    }
    
    // third party package loadable
    const Parent2_Lazy = loadable(()=>import('./lazy'),{
        fallback:<Loading/>
      });
    
    // 路由定义
    function Routing(){
        return (
            <>
                <ul>
                    <li><Link to="/parent/child1">Child1</Link></li>
                    <li><Link to="/parent/child2">Child2</Link></li>
                    <li><Link to="/parent/child3">Child3</Link></li>
                </ul>
            </>
        )
    }
    
    //路由匹配
    funtion Route(){
        return (
            <Route exact={false} path={`/parent`}><Parent_Lazy/></Route>;
            //<Route exact={false} path={`/parent`}><Parent2_Lazy/></Route>;
        )
    }
    
    

    懒加载的代码,下面的代码跟子组件Child1-3 一起打包,最终懒加载。

    export default function lazy(){
        return (
            <>
                <Route path={/parent/child1}><Child1/></Route>
                <Route path={/parent/child2}><Child2/></Route>
                <Route path={/parent/child3}><Child3/></Route>
            </>
        )
    }
    

    总结一下:

    • 路由分组加上懒加载,可以很方便的实现代码模块化,代码间解耦,减少单包的大小
    • loadable vs React.lazy 借用loadable 原话
      它们都支持Suspense,
      loadable: 支持 SSR, library Splitting, import(./${value});
  • 相关阅读:
    2020.10.13辗转相除法
    关于……
    友情链接
    李群笔记
    c++中的复数
    python快速傅里叶变换
    多参数函数共轭梯度法寻找极值:gsl_multimin_fdfminimizer
    python: matplotlib.pyplot 制作动图
    简易威尔逊云室计划
    大规模矩阵对角化方法:Lanczos
  • 原文地址:https://www.cnblogs.com/kongshu-612/p/14856754.html
Copyright © 2020-2023  润新知