当路由BrowserRouter中出现了多个相同的Route时组件会被重复渲染,代码:
<BrowserRouter>
<div className="main">
<Menu/>
<Route exact path="/" component={Home}/>
<Route path="/home" component={Home}/>
<Route path="/about" component={About}/>
<Route path="/about" component={About}/>
<Footer/>
</div>
</BrowserRouter>
效果如图:
当使用了<switch>
标签包裹时:
<BrowserRouter>
<div className="main">
<Menu/>
<Switch>
<Route exact path="/" component={Home}/>
<Route path="/home" component={Home}/>
<Route path="/about" component={About}/>
<Route path="/about" component={About}/>
</Switch>
<Footer/>
</div>
</BrowserRouter>
效果图如下:
说明:当使用<Switch>
标签时,相同的<Route>
只匹配第一个。如果不使用<Switch>
,相同的<Route>
都将会被渲染。为了避免组件被重复渲染的情况,配置路由的时候最好使用<Switch>
包裹。