使用Switch标签解决React相同Router被重复渲染问题

使用Switch标签解决React相同Router被重复渲染问题
在写React项目的时候,遇见了组件被重复渲染的现象。我是如何解决的呢?使用switch标签包裹就解决了,如下是使用和不使用switch标签的对比示例:

当路由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标签出现重复渲染效果

当使用了<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标签后不被重复渲染效果

说明:当使用<Switch>标签时,相同的<Route>只匹配第一个。如果不使用<Switch>,相同的<Route>都将会被渲染。为了避免组件被重复渲染的情况,配置路由的时候最好使用<Switch>包裹。

the end

热门文章