关于路由的匹配

关于路由的匹配

相关代码:

<BrowserRouter>
<Switch>
<Route path='/detail' component={Detail} />
<Route path='/' component={List} />
</Switch>
</BrowserRouter>

上面这段代码中 component={Detail},其中的{Detail}是对应引入的类Detail吗?

import Detail from './containers/Detail/';

也就是说引入的一个类,在路由选择中,用“component=”就可以调用了?

另外,后来,老师把'./containers/List/'下的class名称修改成立了“PageList",代码如下,但是,在src根目录下的index.js文件中,仍然引入的是List:

import List from './containers/List/';

并没有做相应修改,为什么不修改也可以?


相关代码:


class PageList extends Component {
render() {
return (
<List
style={{background: '#fff'}}
bordered
dataSource={data}
renderItem={item => (<List.Item>{item}</List.Item>)}
/>
)
}
}
export default PageList;

还有一个问题,为什么老师说,'/deail'和'/'匹配?而'/'与'/deail'不匹配?路由匹配,是地址中完全包含了选择路径中的字符串,就算匹配了吗?还是,下一级路径可以与上一级路径匹配,而反之不行?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕慕子 2021-01-31 10:02:16

同学你好,对于你的问题解答如下:

1、下图所示的理解是对的

http://img1.sycdn.imooc.com//climg/6016096e0980069606560107.jpg

2、因为List/index.js中使用export default方式导出的,在其他文件中使用import导入时,可以使用任意名称接收,所以视频中老师虽然修改了导出时的名称,但是不用修改导入时的名称

3、老师这里要表达的意思是:如果书写顺序如下图所示

http://img1.sycdn.imooc.com//climg/60160cab09c60d0d09140141.jpg

因为/detail中包含了/,那么当你输入/detail的时候,/是可以被匹配到的,所以页面中就会显示List,而不是Detail

写成如下顺序后

http://img1.sycdn.imooc.com//climg/60160d2b09a5de5508770152.jpg

当你输入/detail,匹配第一个路由,返回Detail,当你输入/时,不会与/detail匹配,而是与第二个路由匹配,返回List

4、可以理解为下一级路由可以与上一级路由匹配,反之不行,路由顺序的书写建议::若有包含关系,包含其他项的放到最上面。被包含的放在下面

祝学习愉快~

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师