关于路由的匹配
相关代码:
<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、下图所示的理解是对的
2、因为List/index.js中使用export default方式导出的,在其他文件中使用import导入时,可以使用任意名称接收,所以视频中老师虽然修改了导出时的名称,但是不用修改导入时的名称
3、老师这里要表达的意思是:如果书写顺序如下图所示
因为/detail中包含了/,那么当你输入/detail的时候,/是可以被匹配到的,所以页面中就会显示List,而不是Detail
写成如下顺序后
当你输入/detail,匹配第一个路由,返回Detail,当你输入/时,不会与/detail匹配,而是与第二个路由匹配,返回List
4、可以理解为下一级路由可以与上一级路由匹配,反之不行,路由顺序的书写建议::若有包含关系,包含其他项的放到最上面。被包含的放在下面
祝学习愉快~
相似问题
登录后可查看更多问答,登录/注册
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星