vue.js - Vue-Router 数据仅获取一次

标签 vue.js vuejs2 vue-router

我目前正在使用 Vue Router 的 beforeEnter Hook 来检索我的其中一条路线的数据。

{
    path: '/A',
    beforeEnter: (to, from, next) => {
      loadData();
      next();
    },
}

流程的一个简单示例是:

Navigate to Route A --> Loading Data
Navigate to Route B
Navigate to Route A --> Loading Data again

如何防止第二次且过时的 API 调用?因为数据是否最新并不重要。 我可以这样做:if (!dataIsAlreadyThere) loadData(),但这对于许多路线来说并不好。还有其他解决方案或想法吗?

最佳答案

根据 vue 和 vue-router 文档中的一些线索,以下内容应该可以工作:

  1. 将路由器 View 包装在 keep-alive 元素内

  2. 在组件的已安装 Hook 中获取 API:

    安装 () { this.data = loadData() }

理论上,即使路由器在路由器 View 内切换组件,这也应该只挂载组件一次并保持其状态处于事件状态。

请注意,这不是 vuejs 或 vue-router 本身建议的首选方式。 Vue 建议使用外部状态管理,如 vuex .

关于vue.js - Vue-Router 数据仅获取一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48267184/

相关文章:

webpack - 如何生成正确的 dist 文件?

vue.js - 如何在 VueJS 组件中绑定(bind) v-model

javascript - Vue.js 组件调用 data 属性内的方法

javascript - 如何在vue js中使用watch功能

javascript - Vue 中路由后未定义 auth0 变量

javascript - 如何使用 Vue.js 进行多嵌套路由?

javascript - VueJS,无法在同一方法内访问 "this"或 "self"

vue.js - 更改 axios 响应架构

javascript - 如何知道动态组件何时完全加载

javascript - Vue.js 在组件之间传递数据