別のページへのVue.jsリダイレクト


133

Vue.jsバニラのjavascriptのようにリダイレクトを作成したい

window.location.href = 'some_url'

Vue.jsでこれを実現するにはどうすればよいですか?


Vueルーター '/ my / vuerouter / url'で定義されたルートへのリダイレクトを意味しますか?それともブラウザはsome-url.comにリダイレクトしますか?
hitautodestruct

回答:


187

を使用している場合はvue-router、を使用router.go(path)して特定のルートに移動する必要があります。ルーターは、を使用してコンポーネント内からアクセスできますthis.$router

それ以外の場合は、window.location.href = 'some url';単一ページ以外のアプリでは正常に機能します。

編集router.go()VueJS 2.0で変更されました。router.push({ name: "yourroutename"})またはrouter.push("yourroutename")今すぐリダイレクトして使用できます。

https://router.vuejs.org/guide/essentials/named-routes.html


2
私の場合、使用は別の非単一ページにダイレクトすることです
Jimmy Obonyo Abor

8
私はなっていた:Uncaught ReferenceError: router is not definedエラーが発生し、コンポーネントにルータを注入する方法は?
Saurabh

@felipekmなに?それは同じことではないですか?
バリーD.

3
router.push( "yourroutename")はrouter.push({name: "yourroutename")と同じではありません。まず、ルートを直接定義します。2番目は、指定された名前のルートを使用します。
pinki 2018

8
this.$router.push('routename)
ka_lin

84

ドキュメントによると、router.pushは推奨される方法のようです:

別のURLに移動するには、router.pushを使用します。このメソッドは新しいエントリを履歴スタックにプッシュするため、ユーザーがブラウザーの戻るボタンをクリックすると、前のURLに移動します。

ソース:https : //router.vuejs.org/en/essentials/navigation.html

参考:Webpackとコンポーネントの設定、単一ページアプリ(Main.jsを介してルーターをインポートする場所)では、次のようにしてルーター関数を呼び出す必要がありました。

this.$router

例:条件が満たされた後に「ホーム」というルートにリダイレクトする場合:

this.$router.push('Home') 

1
この質問は、コンパイル(webpack)とは関係ありません。
Jimmy Obonyo Abor 2017

12
ほとんどの人がvue cli、webpack、ルーター、store / vuexを使用して開発を行っており、ルーターを呼び出せないという問題に遭遇する可能性がありますが、投票に感謝します。
Dave Sottimano 2017

1
@JimmyObonyoAbor hiyo comment na downvote utasema unamlipa haha
Cholowao

@Cholowao彼彼彼、sawa tushasikia!私は反応カジを得ました、あなたがスキルを持っているなら私にpingしてください...
ジミーObonyoアボール

1
@JimmyObonyoAbor
Cholowao

41

ただ使う:

window.location.href = "http://siwei.me"

vue-routerを使用しないでください。使用すると、「http://yoursite.com/#!/http://siwei.me」にリダイレクトされます

私の環境:ノード6.2.1、vue 1.0.21、Ubuntu。


1
理由はわかりません。なぜこれを二重引用符で囲む必要があるのでしょうか?
Moritz

1
実際、standardjsは「エスケープを回避する場合を除いて、文字列には一重引用符を使用する」と述べています。
Moritz

これは少し前のことですが、実際には一重引用符を使用してこれを解決しましたが、二重引用符も機能し、複雑なリンクで役立つ可能性があると思います。
Jimmy Obonyo Abor

最初にVueのバージョンを確認してください。初期のバージョンでは、おそらくvueはコード規約を気にしません。ただし、私の環境では、コード規則によりコンパイルエラーが発生します(es6からバニラjsにコンパイルされます)。「ES6」ノードモジュールを使用していない場合は、問題ないかもしれません。
Siwei Shen申思维

それを新しいタブで開きたい場合はどうしますか?
Fthi.a.Abadi




6

別のページにルーティングする場合 this.$router.push({path: '/pagename'})

paramsでルーティングしたい場合 this.$router.push({path: '/pagename', param: {param1: 'value1', param2: value2})


5
window.location = url;

'url'は、リダイレクトするWeb URLです。


3

v-bindをテンプレートに直接使用することもできます...

<a :href="'/path-to-route/' + IdVariable">

これ:はの省略形ですv-bind


href =」:あなたはまた、ES6構文を使用することができます`/path-to-route/${IdVariable}`(と呼ばこことして"または名前付きルートをrouter.vuejs.org/guide/essentials/named-routes.html:) :href="{ name: 'NamedRouteDeclaredAtRouter' , params: { id: idValue } }"
メネ

1

あるページ/aから別のページへの永続的なリダイレクトが必要な場合/b


redirect:追加されたオプションを使用できますrouter.js。たとえば、ユーザーがルートまたはベースURLを入力したときに、常に別のページにリダイレクトしたい場合は、次のようにします/

const router = new Router({
  mode: "history",
  base: process.env.BASE_URL,
  routes: [
    {
      path: "/",
      redirect: "/someOtherPage",
      name: "home",
      component: Home,
      // () =>
      // import(/* webpackChunkName: "home" */ "./views/pageView/home.vue"),

    },
   ]

0
<div id="app">
   <a :href="path" />Link</a>
</div>

<script>
      new Vue({
        el: '#app',
        data: {
          path: 'https://www.google.com/'
        }
      });
</script> enter code here

0

だから、私が探していたのはどこに置くべきかということだけでした、window.location.hrefそして私が結論を下したのは、リダイレクトする最善かつ最速の方法はルートにあるということでした(そのようにして、リダイレクトする前に何かがロードされるのを待ちません)。

このような:

routes: [
    {
        path: "/",
        name: "ExampleRoot",
        component: exampleComponent,
        meta: {
            title: "_exampleTitle"
        },
        beforeEnter: () => {
            window.location.href = 'https://www.myurl.io';
        }
    }]

多分それは誰かを助けるでしょう。


0

元のリクエストに合わせるには:

window.location.href = 'some_url'

あなたはこのようなことをすることができます:

<div @click="this.window.location='some_url'">
</div>

これはVueのルーターの使用を利用していませんが、「Vue.jsでバニラJavaScriptと同様のリダイレクトを行いたい」場合、これは機能します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.