react-router中exact使用

exact是Route的一个属性,认为其是一种严格匹配模式

当exact为false时,根据路由匹配所有组件,例如/a/b/c 能匹配到/、/a、/a/b、/a/b/c 且匹配还是按顺序的

例如路由设置的前后顺序为:

1./ ;

2. /a;

3. /a/b ; 

4./a/b/c

且前3个路径都没有设置 exact,这样前3个组件都会被渲染并且默认将2当作1的子页面,3当作2的子页面

当exact为true时,例如/被设置exact=true ,那么’/home‘则无法匹配到’/‘,因为’/‘无法被渲染;若’/home‘是’/‘子页面,那么获取的效果’/home‘会是一个空白页


再如:‘/’路径下有两个子页面,为了保证子页面正常显示没有将‘/’的exact设置为true,加上一个独立页面‘/login’ 此时‘/login’若配置在‘/’后,

则会渲染‘/’页面,而‘/login’被视为‘/’的组件也没有被渲染,此时更换位置,将‘/login’配置在‘/’之前,则先匹配到‘/login’进行渲染



实际应用中设置该属性,取决于页面的构造。

1.若一个页面中没有嵌套其他子页面,大可将其设置为exact=true,它不会影响其他的独立页面

2.若一个页面嵌套了子页面,则不能将exact=true ,否则子页面的父页面不能渲染导致页面为空,且路径设置时注意父页面为’/home‘,子页面的路径为’/home/about‘,若设置成'/about'也会因匹配不到'/home'导致渲染为空

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 安装 示例 容器组件 react-router的容器组件,就是最外层包括所有路由的组件,所有路由活动需要在容器组件...
    Mr无愧于心阅读 5,501评论 0 1
  • VUE Vue :数据驱动的M V Vm框架 m :model(后台提供数据),v :view(页面),vM(模板...
    wudongyu阅读 10,752评论 0 11
  • 路由,其实就是指向的意思,当我点击页面上的home按钮时,页面中就要显示home的内容,如果点击页面上的about...
    裘马轻狂大帅阅读 4,044评论 0 5
  • 用Vue.js + vue-router创建单页应用,是非常简单的,基本是这样的: 组件 → 路由 → 渲染地方 ...
    阿go阅读 5,203评论 0 0
  • 1路由,其实就是指向的意思,当我点击页面上的home按钮时,页面中就要显示home的内容,如果点击页面上的abou...
    你好陌生人丶阅读 5,557评论 0 6