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中exact使用)