Jadual Kandungan
Analisis
我是页面A啊
我是页面B啊
我是页面C啊
Pengawal global
路由守卫
组件守卫
beforeRouteLeave
总结
完整的导航解析流程
Rumah hujung hadapan web Soal Jawab bahagian hadapan vue-router mempunyai beberapa cangkuk

vue-router mempunyai beberapa cangkuk

Dec 22, 2021 pm 04:49 PM
vue-router cangkuk

Terdapat 7 cangkuk: 1. sebelumSetiap; 3. selepasSetiap; 5. sebelumRouteEnter;

vue-router mempunyai beberapa cangkuk

Persekitaran pengendalian tutorial ini: sistem Windows 7, vue versi 2.9.6, komputer DELL G3.

vue-router Berapa banyak fungsi cangkuk yang ada? Apakah sebenarnya dan apakah proses pelaksanaannya?

Mulakan dengan peta minda.

vue-router 钩子函数.png

Analisis

vue-routerfungsi cangkuk sebenarnya merujuk kepada Pengawal Navigasi.

Memetik tapak web rasmi

Navigasi” menunjukkan bahawa penghalaan sedang berubah. Pengawal navigasi yang disediakan oleh

vue-router digunakan terutamanya untuk menjaga navigasi dengan melompat atau membatalkan. Terdapat berbilang peluang untuk membina proses navigasi laluan: secara global, eksklusif untuk satu laluan, atau pada peringkat komponen.

Iaitu: Global Guard, Route Guard, Component Guard.

Persediaan persekitaran demonstrasi kod

Mula-mula sediakan persekitaran secara ringkas

index.js

/*
 * @Description:一尾流莺
 * @Date: 2021-03-21 16:17:56
 * @LastEditTime: 2021-07-18 15:14:42
 * @FilePath: \vite-project-js\src\router\index.js
 */

import { createRouter, createWebHashHistory } from 'vue-router';

const router = createRouter({
  history: createWebHashHistory(),
  routes: [
    {
      path: '/a',
      component: () => import('../components/A.vue'),
    },
    {
      path: '/b',
      component: () => import('../components/B.vue'),
    },
    {
      path: '/c',
      component: () => import('../components/C.vue'),
    },
  ],
});
export default router;
Salin selepas log masuk

main.js

// index.js
import router from "./router"; 
createApp(App).use(router).mount("#app");
Salin selepas log masuk

Halaman A

<template>
  <div>
    <h1 id="我是页面A啊">我是页面A啊</h1>
    <comp></comp>
  </div>
</template>
Salin selepas log masuk

Halaman B

<template>
  <div>
    <h1 id="我是页面B啊">我是页面B啊</h1>
    <comp></comp>
  </div>
</template>
Salin selepas log masuk

Halaman C

<template>
  <div>
    <h1 id="我是页面C啊">我是页面C啊</h1>
    <comp></comp>
  </div>
</template>
Salin selepas log masuk

Komponen Umum

<template>
  <div>我是公用组件啊</div>
</template>
Salin selepas log masuk

Halaman semasa begini, agak hodoh, cuma tonton sebentar, kami di sini bukan untuk belajar css

vue-router mempunyai beberapa cangkuk

Pengawal global

, seperti namanya, ditakrifkan secara global, iaitu, objek index.js dalam router kami.

sebelumSetiap

Pengadang hadapan global, dicetuskan sebelum lompat laluan, ia akan dicetuskan setiap kali navigasi pencetus.

Daftar pengawal hadapan global melalui router.beforeEach.

vue-router mempunyai beberapa cangkuk

Parameter

beforeEach Pengawal hadapan global menerima tiga parameter

  • ke: Laluan : Objek laluan sasaran yang akan masuk
  • dari: Laluan: Objek laluan yang akan ditinggalkan oleh navigasi semasa
  • seterusnya: Fungsi: Tertentu Kaedah ini mesti dipanggil jika tidak ia akan menyekat penghalaan.

Nota: next parameter tidak perlu ditambah, tetapi setelah ditambah, ia mesti dipanggil sekali, jika tidak, lompatan penghalaan, dsb. akan berhenti. Beberapa kes kaedah

next()

  • next(): Teruskan ke cangkuk seterusnya dalam perancangan.
  • seterusnya(salah): Mengganggu navigasi semasa. Kembali ke alamat yang sepadan dengan laluan from.
  • next('/') atau next({ path: '/' }): melompat ke alamat yang berbeza Parameter yang boleh dihantar adalah sama dengan pilihan dalam router.push.
  • seterusnya(ralat): Navigasi ditamatkan dan ralat akan dihantar ke router.onError() panggil balik berdaftar.

Mari cetak dua parameter pertama dan lihat ia mengandungi laluan, parameter, maklumat meta, dsb.

vue-router mempunyai beberapa cangkuk

Nilai pulangan

  • salah: Batalkan navigasi semasa.
  • null, undefined, true atau return terus: Panggil pengawal navigasi seterusnya.

Tentukan berbilang pengawal

Berbilang pengawal hadapan global boleh ditakrifkan dan dipanggil mengikut susunan penciptaan. Navigasi sedang menunggu sehingga semua pengawal selesai.

Dalam contoh berikut, kami mentakrifkan dua beforeEach pengawal hadapan global. Ia boleh dilihat bahawa lompatan halaman berlaku hanya selepas dua log dicetak dua saat kemudian.

vue-router mempunyai beberapa cangkuk

vue-router mempunyai beberapa cangkuk

Kecuali beforeEach pengawal hadapan global, pengawal global lain boleh ditakrifkan, dan semua pengawal telah selesai Sebelum ini, navigasi telah menunggu, dan fungsi cangkuk lain tidak akan ditunjukkan.

beforeResolve

Pengawal resolusi global, sebelum lompat laluan, semua pengawal dalaman dan adalah tak segerak Penghalaan komponen dicetuskan selepas ia dihuraikan Ia juga dicetuskan setiap kali menavigasi .

Daftarkan pengawal penghuraian global melalui router.beforeResolve.

router.beforeResolve((to, from, next) => {
  next();
})
Salin selepas log masuk

回调参数,返回值和 beforeEach 一样。也可以定义多个全局解析守卫。

afterEach

全局后置钩子,它发生在路由跳转完成后,beforeEachbeforeResolve 之后,beforeRouteEnter(组件内守卫)之前。它同样在 每次导航 时都会触发。

通过 router.afterEach 注册一个全局后置钩子。

vue-router mempunyai beberapa cangkuk

这个钩子的两个参数和 beforeEach 中的 tofrom 一样。然而和其它全局钩子不同的是,这些钩子不会接受 next 函数,也不会改变导航本身。

路由守卫

顾名思义,就是跟路由相关的钩子,我们的路由守卫只有一个,就是 beforeEnter

beforeEnter

需要在路由配置上定义 beforeEnter 守卫,此守卫只在进入路由时触发,在 beforeEach 之后紧随执行,不会在 paramsqueryhash 改变时触发。

vue-router mempunyai beberapa cangkuk

beforeEnter 路由守卫的参数是 tofromnext ,同 beforeEach 一样。

组件守卫

顾名思义,是定义在路由组件内部的守卫。

beforeRouteEnter

vue-router mempunyai beberapa cangkuk

路由进入组件之前调用,该钩子在全局守卫 beforeEach 和路由守卫 beforeEnter 之后,全局 beforeResolve 和全局 afterEach 之前调用。

参数包括 tofromnext

该守卫内访问不到组件的实例,也就是 thisundefined,也就是他在 beforeCreate 生命周期前触发。

beforeRouteUpdate

vue-router mempunyai beberapa cangkuk

对于 beforeRouteUpdate 来说,this 已经可用了,所以给 next 传递回调就没有必要了。

beforeRouteLeave

vue-router mempunyai beberapa cangkuk

对于 beforeRouteLeave 来说,this 已经可用了,所以给 next 传递回调就没有必要了。

总结

完整的导航解析流程

  • 导航被触发。

  • 在失活的组件里调用 beforeRouteLeave 守卫。

  • 调用全局的 beforeEach 守卫。

  • 在重用的组件里调用 beforeRouteUpdate 守卫。

  • 在路由配置里调用 beforeEnter

  • 解析异步路由组件。

  • 在被激活的组件里调用 beforeRouteEnter

  • 调用全局的 beforeResolve 守卫。

  • 导航被确认。

  • 调用全局的 afterEach 钩子。

  • 触发 DOM 更新。

  • 调用 beforeRouteEnter 守卫中传给 next 的回调函数,创建好的组件实例会作为回调函数的参数传入。

上面是官方给出的答案,现在我们用流程图来直观的展示一下。

vue-router mempunyai beberapa cangkuk

【相关推荐:《vue.js教程》】

Atas ialah kandungan terperinci vue-router mempunyai beberapa cangkuk. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Saya mengalami ralat vue-router 'NavigationDuplicated: Mengelakkan navigasi berlebihan ke lokasi semasa' dalam aplikasi Vue saya - bagaimana untuk menyelesaikannya? Saya mengalami ralat vue-router 'NavigationDuplicated: Mengelakkan navigasi berlebihan ke lokasi semasa' dalam aplikasi Vue saya - bagaimana untuk menyelesaikannya? Jun 24, 2023 pm 02:20 PM

Ralat vue-router "NavigationDuplicated:Avoidedredundantnavigationtocurrentlocation" yang ditemui dalam aplikasi Vue – bagaimana untuk menyelesaikannya? Vue.js menjadi semakin popular dalam pembangunan aplikasi bahagian hadapan sebagai rangka kerja JavaScript yang pantas dan fleksibel. VueRouter ialah perpustakaan kod Vue.js yang digunakan untuk pengurusan penghalaan. Namun, kadangkala

Artikel yang menerangkan penghalaan Vue secara terperinci: vue-router Artikel yang menerangkan penghalaan Vue secara terperinci: vue-router Sep 01, 2022 pm 07:43 PM

Artikel ini akan memberi anda penjelasan terperinci tentang Vue-Router dalam baldi keluarga Vue, dan belajar tentang pengetahuan penghalaan saya harap ia akan membantu anda.

Vue dan Vue-Router: Bagaimana untuk berkongsi data antara komponen? Vue dan Vue-Router: Bagaimana untuk berkongsi data antara komponen? Dec 17, 2023 am 09:17 AM

Vue dan Vue-Router: Bagaimana untuk berkongsi data antara komponen? Pengenalan: Vue ialah rangka kerja JavaScript yang popular untuk membina antara muka pengguna. Vue-Router ialah pengurus penghalaan rasmi Vue, digunakan untuk melaksanakan aplikasi satu halaman. Dalam aplikasi Vue, komponen ialah unit asas untuk membina antara muka pengguna. Dalam banyak kes kita perlu berkongsi data antara komponen yang berbeza. Artikel ini akan memperkenalkan beberapa kaedah untuk membantu anda mencapai perkongsian data dalam Vue dan Vue-Router, dan

Bagaimana untuk menyelesaikan masalah 'Ralat: Komponen laluan tidak sah: xxx' apabila menggunakan vue-router dalam aplikasi Vue? Bagaimana untuk menyelesaikan masalah 'Ralat: Komponen laluan tidak sah: xxx' apabila menggunakan vue-router dalam aplikasi Vue? Jun 25, 2023 am 11:52 AM

Vue ialah rangka kerja bahagian hadapan yang popular yang membolehkan pembangun membina aplikasi web yang cekap dan boleh digunakan semula dengan cepat. Vue-router ialah pemalam dalam rangka kerja Vue yang membantu pembangun mengurus penghalaan dan navigasi aplikasi dengan mudah. Walau bagaimanapun, apabila menggunakan Vue-router, anda kadangkala menghadapi ralat biasa: "Error:Invalidroutecomponent:xxx". Artikel ini akan menerangkan punca dan penyelesaian kepada ralat ini. Sebabnya terletak pada Vu

Bagaimana untuk menyelesaikan masalah 'Ralat: Mengelakkan navigasi berlebihan ke lokasi semasa' apabila menggunakan vue-router dalam aplikasi Vue? Bagaimana untuk menyelesaikan masalah 'Ralat: Mengelakkan navigasi berlebihan ke lokasi semasa' apabila menggunakan vue-router dalam aplikasi Vue? Jun 24, 2023 pm 05:39 PM

Apabila menggunakan vue-router dalam aplikasi Vue, mesej ralat "Ralat: Avoidedredundantnavigationtocurrentlocation" kadangkala muncul. Mesej ralat ini bermaksud "mengelakkan navigasi berlebihan ke lokasi semasa" dan biasanya disebabkan oleh mengklik pautan yang sama berulang kali atau menggunakan laluan penghalaan yang sama. Jadi, bagaimana untuk menyelesaikan masalah ini? Gunakan pengubah suai tepat apabila menentukan penghala

Bagaimana untuk menyelesaikan masalah 'Ralat: Gagal menyelesaikan komponen async: xxx' apabila menggunakan vue-router dalam aplikasi Vue? Bagaimana untuk menyelesaikan masalah 'Ralat: Gagal menyelesaikan komponen async: xxx' apabila menggunakan vue-router dalam aplikasi Vue? Jun 24, 2023 pm 06:28 PM

Menggunakan vue-router ialah cara biasa untuk melaksanakan kawalan penghalaan dalam aplikasi Vue. Walau bagaimanapun, apabila menggunakan vue-router, ralat "Ralat: Failedtoresolveasynccomponent:xxx" kadangkala berlaku, yang disebabkan oleh ralat memuatkan komponen tak segerak. Dalam artikel ini, kami akan meneroka masalah ini dan memberikan penyelesaian. Fahami prinsip pemuatan komponen tak segerak Dalam Vue, komponen boleh dibuat secara serentak atau tak segerak.

Vue-Router: Bagaimana untuk menggunakan maklumat meta penghalaan untuk mengurus penghalaan? Vue-Router: Bagaimana untuk menggunakan maklumat meta penghalaan untuk mengurus penghalaan? Dec 18, 2023 pm 01:21 PM

Vue-Router: Bagaimana untuk menggunakan maklumat meta penghalaan untuk mengurus laluan? Pengenalan: Vue-Router ialah pengurus penghalaan rasmi Vue.js, yang boleh membantu kami membina aplikasi satu halaman (SPA) dengan cepat. Sebagai tambahan kepada fungsi penghalaan biasa, Vue-Router juga menyokong penggunaan maklumat meta penghalaan untuk mengurus dan mengawal penghalaan. Metainformation penghalaan ialah atribut tersuai yang boleh dilampirkan pada laluan, yang boleh membantu kami melaksanakan beberapa logik khas atau kawalan kebenaran. 1. Apakah penghalaan metamaklumat? Maklumat meta penghalaan ialah

Selesaikan ralat Vue: Tidak dapat menggunakan vue-router dengan betul untuk lompat laluan Selesaikan ralat Vue: Tidak dapat menggunakan vue-router dengan betul untuk lompat laluan Aug 17, 2023 pm 10:29 PM

Selesaikan ralat Vue: Tidak dapat menggunakan vue-router dengan betul untuk lompatan penghalaan Apabila kami menggunakan Vue untuk membangunkan projek bahagian hadapan, kami sering menggunakan vue-router untuk lompatan penghalaan halaman. Walau bagaimanapun, kadangkala kami mungkin menghadapi beberapa ralat semasa menggunakan vue-router, menyebabkan laluan gagal melompat seperti biasa. Artikel ini akan menjawab soalan ini dan memberikan penyelesaian yang sepadan. Pertama, sebelum menggunakan vue-router, kita perlu memastikan bahawa vue-rou telah dipasang dengan betul

See all articles