当前位置: 首页 > 知识库问答 >
问题:

我们有路由器吗。在vue路由器中重新加载?

葛鸿熙
2023-03-14

我在这个拉请求中看到:

>

重新加载当前路径并再次调用数据钩子

但是当我尝试从Vue组件发出以下命令时:

this.$router.reload()

我得到这个错误:

uncaughttypeerror:这是一个错误$路由器。重新加载不是一项功能

我搜索了文档,但没有找到任何相关的内容。vue/vue路由器是否提供类似的功能?

我感兴趣的软件版本有:

"vue": "^2.1.0",
"vue-router": "^2.0.3",

另外,我知道的位置。reload()是备选方案之一,但我正在寻找本机Vue选项。

共有3个答案

松高爽
2023-03-14
this.$router.go(this.$router.currentRoute)

Vue路由器文档:

我在GitHub上检查了vue路由器repo,似乎再也没有reload()方法了。但在同一个文件中,有:currentRouteobject。

来源:vue路由器/src/index。js
文档:文档

get currentRoute (): ?Route {
    return this.history && this.history.current
  }

现在您可以使用这个$路由器。转到(this.$router.currentRoute)重新加载当前路由。

简单的例子。

此答案的版本:

"vue": "^2.1.0",
"vue-router": "^2.1.1"
解飞语
2023-03-14

最简单的解决方案是添加一个: key属性到:

<router-view :key="$route.fullPath"></router-view>

这是因为如果正在处理相同的组件,Vue路由器不会注意到任何更改。使用密钥,对路径的任何更改都将触发使用新数据重新加载组件。

姜嘉良
2023-03-14

$router.go()正是这样做的;如果没有指定参数,路由器导航到当前位置,刷新页面。

注意:路由器及其历史组件的当前实现没有将参数标记为可选的,但IMVHO它要么是一个bug,要么是Evan You的遗漏,因为规范明确允许它。我已经就此提交了一份问题报告。如果您真正关心当前的TS注释,只需使用等效的this$路由器。go(0)

至于为什么是这样:go在内部将其参数传递给window.history.go,因此它等于windows.history.go()-这反过来又重新加载页面MDN文档。

注意:因为这在普通桌面(非便携式)火狐上执行“软”重载,如果你使用它,可能会出现一堆奇怪的怪癖,但事实上你需要真正的重载;使用window.location.reload(true);(<-OP提到的plhd--1/>)可能会有所帮助——它确实解决了我在FF上的问题。

 类似资料:
  • 我有几个路线,每个路线装载3个组件。所有管线上的两个组件都相同。当我在这些路由之间移动时,我希望传递新数据,在组件的某个初始化事件上,我希望填充该组件的数据,以便它反映在UI上。我还想重新触发正在加载的组件的引导动画。我该怎么做呢。因为现在,我不知道在组件的生命周期中,我将在哪里获取数据,并使用这些新数据重新提交组件。具体来说,在myapps/1和/newapp/I中有一个主视图组件和一个侧栏组件

  • 我有一个关于Vuejs和Vue路由器的项目。当用户登录系统时,服务器返回一个带有令牌、用户名和名字的Json文件,该文件存储在localstorage中,以便在以下请求中使用。第一个名称在布局中用于在导航栏中显示欢迎消息。注销后,localstorage被清除,问题就在这里,当其他用户在消息welcome not reload中使用新的名字付费时。

  • 使用vue 2、vue路由器2和vuex 2构建单页应用程序,但不更新 /src/main。js /src/路由器/索引。js /src/路由器/路由。js /src/store/index。js /src/view/index。vue /src/App。vue 我不知道代码有什么问题,

  • 我希望使用相同的路由路径,根据用户角色为我的用户加载稍微不同的视图。 以前,我已经加载了基于当前域的不同路由: 这种方法只依赖于子域,子域在创建时可用,因此所有内容都可以是同步的。我必须对用户进行身份验证,根据其角色加载正确的路由,然后导出路由器以初始化vue应用程序。 理想情况下,我可以加载基于用户角色的,,,其中可以包含角色的所有路由定义。 我正在使用Feathers-vuex,但我似乎不能等

  • 我有一个显示多条路线的组件(步骤1、步骤2、步骤3…)一个接一个。我导航并传递属性,如 路线定义为 这很有效,直到我重新加载页面/路由,因为数据丢失。所以我有点想在加载组件后从父级获取数据。 我的一个想法是使用本地存储,但这感觉不对。 我是Vue的新手,我想问一下这里的最佳实践是什么。是否像这里描述的那样使用vue路由器重新加载组件?请给我一个提示。

  • 我有一个带有路由器插座的根应用程序组件,并且路由是从家庭模块路由加载的,该路由在其子路由中使用延迟加载和 loadchildren。家庭组件中有一个路由器插座,在家庭的所有子模块中也有延迟加载的路由器插座。路由工作正常,但子路由也加载到根路由器出口中。例如:- 组件“testCreateComponent”正在加载localhost:4200 / test/create和localhost:420