对于这三个方式,存在一些混淆:
<Link to='/some/path'>
<Redirect to='/some/path'/>
history.push('/some/path')
我已使用React/Router一段时间,不同的文章和答案说了不同的用法,有时他们与其他人说的不一样。所以我认为需要澄清一下。
根据Link
和文档:
提供声明式、可访问的导航。
根据Redirect
和文档:
将导航到新位置。新位置将覆盖历史堆栈中的当前位置,就像服务器端重定向(HTTP 3xx)一样。
似乎我读过的所有帖子中,几乎所有人都使用Redirect
来导航到他们的应用程序,没有人推荐像这个文章中那样使用Link
。
现在,history
可以像Link
和Redirect
一样做同样的事情,只不过我有一个历史记录堆栈。
问题1:何时使用Link
和Redirect
,每种方法的使用场景是什么?
问题2:既然history
可以通过添加历史记录堆栈将用户路由到应用程序中的另一个位置,那么在进行路由时,我是否应该始终只使用history对象?
问题3:如果我想路由到应用程序之外,最好的方法是什么?锚点标签、Window.location.href、Redirect、Link还是以上都不是?
Link
时,它会使你在应用程序中导航。当渲染Redirect
时,它将自动将一个条目推送到history
栈中。Link
也会将一个条目推送到history
栈中,因此如果您的目的可以使用Link
,通常比自己操纵history
更容易。<a>
标签非常好用。