Vue.js'nin başka bir sayfaya yönlendirilmesi


Yanıtlar:


189

Kullanıyorsanız vue-router, router.go(path)belirli bir rotaya gitmek için kullanmalısınız . Yönlendiriciye kullanılarak bir bileşenin içinden erişilebilir this.$router.

Aksi takdirde, window.location.href = 'some url';tek sayfalı olmayan uygulamalar için iyi çalışır.

EDIT : router.go()VueJS 2.0'da değiştirildi. Yeniden yönlendirmek için router.push({ name: "yourroutename"})veya hemen router.push("yourroutename")şimdi kullanabilirsiniz.

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


2
Benim durumumda, kullanım tek sayfalık olmayan başka bir sayfaya yönlendirmektir
Jimmy Obonyo Abor

8
Alıyordum: Uncaught ReferenceError: router is not definedhata, Yönlendirici bileşene nasıl enjekte edilir?
Saurabh

@felipekm ne? Bu aynı şey değil mi?
Barry D.

3
router.push ("yourroutename") router.push ({name: "yourroutename") ile aynı DEĞİLDİR. İlki, rotayı doğrudan tanımlar. İkincisi, belirtilen adla rotayı alır.
pinki

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

85

Dokümanlara göre router.push tercih edilen yöntem gibi görünüyor:

Farklı bir URL'ye gitmek için router.push kullanın. Bu yöntem, geçmiş yığınına yeni bir giriş iter, böylece kullanıcı tarayıcı geri düğmesini tıkladığında önceki URL'ye götürülür.

kaynak: https://router.vuejs.org/en/essentials/navigation.html

Bilginize: Web paketi ve bileşen kurulumu, tek sayfalı uygulama (yönlendiriciyi Main.js aracılığıyla içe aktardığınız yer), şunu söyleyerek yönlendirici işlevlerini çağırmak zorunda kaldım:

this.$router

Örnek: Bir koşul karşılandıktan sonra "Ana Sayfa" adlı bir rotaya yeniden yönlendirmek istiyorsanız:

this.$router.push('Home') 

1
Bu sorunun derlemeyle (web paketi) ilgisi yoktur.
Jimmy Obonyo Abor

12
Olumsuz oy için teşekkürler, çoğu insan vue cli, webpack, router ve store / vuex ile gelişecek ve muhtemelen router'ı arayamama problemiyle karşılaşacak.
Dave Sottimano

1
@JimmyObonyoAbor hiyo comment na downvote utasema unamlipa haha
Cholowao

@Cholowao he he he he, sawa tushasikia! React kazi aldım, becerileriniz varsa ping yapın ...
Jimmy Obonyo Abor

1
@JimmyObonyoAbor
Cholowao

42

sadece kullan:

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

Vue-router kullanmayın, aksi takdirde " http://yoursite.com/#!/http://siwei.me " adresine yönlendirileceksiniz.

ortamım: düğüm 6.2.1, vue 1.0.21, Ubuntu.


1
Herhangi bir neden göremiyorum, bu neden çift tırnak içinde yazılmalıdır ..?
Moritz

1
Aslında standartjs "Kaçmayı önlemek dışında dizeler için tek tırnak kullanın" diyor.
Moritz

Bu bir süre önceydi ama aslında bunu tek tırnak kullanarak çözdüm, ancak sanırım çift tırnak da işe yaramalı ve karmaşık bağlantılarda yararlı olabilir.
Jimmy Obonyo Abor

önce vue sürümünü kontrol edin. erken sürümde, belki vue kod kuralını önemsemiyordur. Ancak benim ortamımda, kod kuralı derleme hatasına neden olacak (es6'dan vanilla js'ye derlenmiş). 'ES6' düğüm modülünü kullanmadıysanız, belki sorun olmayacaktır.
Siwei Shen 申思维

Ya yeni bir sekmede açmak isterseniz?
Fthi.a.Abadi

29

Bir bileşen komut dosyası etiketinin içindeyken yönlendiriciyi kullanabilir ve bunun gibi bir şey yapabilirsiniz.

this.$router.push('/url-path')

Teşekkürler dostum, Basit ve yalındır.
Solution Spirit



7

başka bir sayfaya yönlendirmek istiyorsanız this.$router.push({path: '/pagename'})

params ile yol almak istiyorsan this.$router.push({path: '/pagename', param: {param1: 'value1', param2: value2})


5
window.location = url;

'url', yeniden yönlendirmek istediğiniz web url'sidir.


3

Ayrıca v-bind'i doğrudan şablona da kullanabilirsiniz ...

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

:kısaltmasıdır v-bind.


ES6 Sözdizimini de kullanabilirsiniz:: href = " `/path-to-route/${IdVariable}`" Veya burada belirtilen adlandırılmış yolu ( router.vuejs.org/guide/essentials/named-routes.html ): :href="{ name: 'NamedRouteDeclaredAtRouter' , params: { id: idValue } }"
mEnE

1

Herhangi biri bir sayfadan /adiğerine kalıcı yönlendirme istiyorsa/b


redirect:Eklenen seçeneği kullanabiliriz router.js. Örneğin, kullanıcıları kök veya temel URL'yi yazdığında her zaman ayrı bir sayfaya yönlendirmek istiyorsak /:

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

Yani, aradığım şey sadece nereye koymam gerektiğiydi window.location.hrefve vardığım sonuç, yeniden yönlendirmenin en iyi ve en hızlı yolunun rotalarda olduğuydu (bu şekilde, yeniden yönlendirmeden önce hiçbir şeyin yüklenmesini beklemiyoruz).

Bunun gibi:

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

Belki birine yardımcı olur ..


0

Orijinal isteğiniz doğrultusunda kalmak için:

window.location.href = 'some_url'

Bunun gibi bir şey yapabilirsiniz:

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

Bunun, Vue'nun yönlendiricisini kullanmaktan yararlanmadığını, ancak "Vue.js'de vanilya javascript'e benzer bir yeniden yönlendirme yapmak" istiyorsanız, bunun işe yarayacağını unutmayın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.