美文网首页Web前端之路Web 前端开发 react
react-router中,<switch>标签存在

react-router中,<switch>标签存在

作者: 春木橙云 | 来源:发表于2018-05-23 10:36 被阅读851次

    在学习中遇到这个问题,怎么翻译都没明白(果然看英文水平还不够啊),终于搞明白,记录下面,如果存在漏洞,望指正!

    • 有<switch>标签
                <BrowserRouter>
                    <div>
                        <div>
                            <ul>
                                <li>
                                    <Link to="/Guide/ContactUs">ContactUs</Link>
                                </li>
                            </ul>
                        </div>
                        <Switch>
                            <Route path="/Guide/ContactUs" component={ ContactUs } ></Route>
                            <Route path="/Guide/ContactUs" component={ ContactUs } ></Route>
                        </Switch>
                    </div>
                </BrowserRouter>
    

    结果为:

    解释:

    有<Switch>标签,则其中的<Route>在路径相同的情况下,只匹配第一个,这个可以避免重复匹配;

    • 无<switch>标签
                <BrowserRouter>
                    <div>
                        <div>
                            <ul>
                                <li>
                                    <Link to="/Guide/ContactUs">ContactUs</Link>
                                </li>
                            </ul>
                        </div>
                            <Route path="/Guide/ContactUs" component={ ContactUs } ></Route>
                            <Route path="/Guide/ContactUs" component={ ContactUs } ></Route>
                    </div>
                </BrowserRouter>
    

    结果为:


    解释:

    无<Switch>标签,则其中的<Route>在路径相同的情况下全都会匹配。更严重的是,还会匹配上级路径的,如下面例子:

                <BrowserRouter>
                    <div>
                        <div>
                            <ul>
                                <li>
                                    <Link to="/Guide/AboutUs">AboutUs</Link>
                                </li>
                            </ul>
                        </div>
                            <Route path="/Guide/ContactUs" component={ ContactUs } ></Route>
                            <Route path="/Guide/ContactUs" component={ ContactUs } ></Route>
                            <Route path="/Guide" component={ AboutUs } ></Route>
                    </div>
                </BrowserRouter>
    

    结果为:


    结论:为了更好地匹配规则,轻易不要舍弃<Switch>。

    相关文章

      网友评论

        本文标题:react-router中,<switch>标签存在

        本文链接:https://www.haomeiwen.com/subject/qfaljftx.html