<router-link> 和$router.push有什么区别?



<router-link>在我看来需要更多的工作来实现,因为您可以将$router.push添加到任何具有@click事件的元素中。

每种方法的优缺点是什么?有没有<router-link>不能被$router.push取代的例子?

虽然router-link的处理程序执行相同的$router.push(),但它也在后台执行一些有用的操作,您必须自己实现这些操作,以确保导航在每个场景中都能按预期工作。例如,它激活一个";导航防护装置";为了检查触发事件的有效性,捕捉任何导航错误,此外,在复杂导航(例如,多级导航菜单(中,主动路线检测和样式设置的实现可能很难实现,router-link实现也简化了该实现。这些是我第一眼看到它的源代码就能发现的一些优点。你可以在这里进行更深入的比较

首先是一个与HTML中的标记类似的标记,因此您不能在脚本标记中使用它。您只能在标记中使用它。您必须将to属性赋予路由器链接,并且您不需要使用点击等。

然而,对于更大的项目,有时你需要在提交表单后重定向到另一个页面,或者在js中使用重定向的任何地方。这就是为什么有$router.push$路由器对象是vue路由器对象,所以你拥有vue路由器为你服务的所有功能。

最新更新