【问题标题】:VueJS with vue-router how to redirect to a server route带有vue-router的VueJS如何重定向到服务器路由
【发布时间】:2017-08-26 11:26:18
【问题描述】:

我正在尝试将单击注销链接的用户重定向到服务器呈现的注销页面。但正如下面的代码所示,我只是被重定向到默认路径。

我在烧瓶中设置了一个服务器路由,如下所示:

@app.route('/logout')
def logout():
    logout_user()
    return render_template('login.html')

在 vue 中我想重定向路由,以便我被定向到服务器路由。

<template>
<a v-on:click="logout">Logout</a>
</template>
<script>
  export default {
    name: SomePage.vue
  },
  methods: {
    logout () {
      this.$router.replace('/logout')
      // I also tried .go('/logout')
    }
  }
 </script>

那我需要在路由器中设置路由吗?

export default new Router {
  routes: {
     {
     path: '/'
     component: Default
     children: [
       {
       path: '/logout'
       // no component added here - is it needed?
       }
     ]
  }
}

由于我已经重定向到 /logout,我不确定为该路由添加组件会有什么帮助,因为我只想转到基本 /logout 并获取服务器返回的 .html 页面。有什么想法吗?

【问题讨论】:

    标签: javascript vue.js vuejs2 vue-router


    【解决方案1】:

    我有一些问题并找到解决方案... 在 vuejs 2 + 中试试这个

    this.$router.push('/logout')
    

    【讨论】:

    • 请编辑这篇文章以提供解释和/或一些额外的背景信息来解释为什么这个解决方案有效。
    • @Toby,根据 Vue 文档“为了与 HTML5 History API 保持一致,router.go 现在仅用于后退/前进导航,而 router.push 用于导航到特定页面。” vuejs.org/v2/guide/migration-vue-router.html希望这有帮助。
    【解决方案2】:

    通过$router 方法操作窗口位置不会导致浏览器执行整个页面重新加载,这正是您在这种情况下想要的。您需要手动设置窗口位置:

    window.location.replace('/logout')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-09
      • 1970-01-01
      • 2020-10-08
      • 2017-10-02
      • 2019-06-17
      • 1970-01-01
      • 2021-01-05
      • 2021-04-26
      相关资源
      最近更新 更多