withRouter、Link、Route等的页面跳转有疑问
来源:7-3 根据登录权限决定页面展示(3)
Aurora_Meteor
2020-06-03 12:55:50
1、这里导入withRouter实现点击退出返回到首页,老师说因为Login不在Route项里所以使用这种方法?
可是我看Header组件和Login组件也是不在Route那部分里面啊,它们里面的许多东西不也使用Link实现了跳转的吗?
这里是Link不能实现所以使用withRouter,还是老师只是为了多讲一种页面跳转的方法呢?
2、Link标签是不是把要实现跳转功能的组件包裹起来,然后在Link组件的to属性中设置要跳转到的路径,再把它所在的组件放在src目录的index.js文件中的BrowserRouter里面就可以实现跳转功能了?
3、Route标签设置的是,在地址栏里输入路径跳转到相应的组件;而Link标签设置的是点击里面的内容跳转带相应的组件?我这个理解的对吗?(不知道应该说跳转到组件还是页面,它们有啥区别,这里应该用哪种描述方式呢?)
3回答
同学你好,关于你的问题,回答如下:
1、是在BrowserRouter中。但是不在Route这个项里(Route项就是上面圈的三个),没有路由的信息。所以引入了withRouter,来获取路由的信息。
而withRouter中提供的方法,我们可以直接跳转路径,不需要再使用到link。
这里是老师多提供了一种方法,还是可以直接使用link的。
2、是的,不过注意是要放到BrowserRouter里面中的路由项中。
3、是的。这里Route就是上面说的路由项。都可以的。一个页面可以叫做一个组件,不过组件的范围更广,一个单独提前的功能也能叫一个组件。
如果我的回答帮助了你,欢迎采纳,祝学习愉快~
好帮手慕糖
2020-06-04
同学你好,关于你的问题,回答如下:
1、是的,Link组件的to属性值是要跳转的路由,这里是要通过Switch选择其中的一路由,所以要放在路由项中。
2、是因为在路由项中,match才可以获取。而不是只要在路由项中,就都要获取哦。
3、不是全部都要放的,是指不是全部都要放到路由项中,比如:我们后面跳转到跟路径的时候,可以直接写“/”,因为是默认到根路径的,其他的是要写的。
祝学习愉快~
好帮手慕糖
2020-06-03
同学你好,关于你的问题,回答如下:
1、是的,上个回答中有说到哦。
2、因为要使用match来获取路由,所以才放到路由项中。
3、不是全部都要放的。
祝学习愉快~
相似问题