vue移动端路由切换案例解析
这次给大家带来vue移动端路由切换案例解析,vue移动端路由切换的注意事项有哪些,下面就是实战案例,一起来看一下。
其中最主要的时以下两个问题:
浏览器导航栏的切换
IOS 上滑动切换时,会有两次页面的转场动画,一次自身滑动时进行的切换,随后触发我们设置的转场动画。
除了上面两个问题,其余的操作都是可以在页面内进行设置,基本都是可控的。主要就是解决上面两个问题。
可以看下实际写出来的效果:在线DEMO
1. 浏览器导航栏的切换
通过记录 历史记录 来比较判断前进还是后退
如下例子
A页面 -> B页面 -> C页面
假如我从 A页面到 B页面 再到C页面,历史记录就会产生3条
我们用一个数组表示: ['/a', '/b', '/c']
然后我在通过点击浏览器导航栏的后退按钮, 我便会回到 B 页面,
这时候我只要判断是否存在 B页面, 存在就证明我点的时后退按钮。
然后只要我后退过, 我就能点击浏览器的前进按钮了。这时候怎么判断它到底是前进的呢。
我们可以这样。
当我们后退到了B页面,历史记录不是还保存着['/a', '/b', '/c'] 三个路径吗
我们可以删除B页面后面的路径,那现在就是 ['/a', '/b'];
如果我们后退到A页面, 那么我们保存的路径就是['/a']
只要我们点击前进按钮, 我们去保存的路径里面找, 是不是就找不到路径了, 那样就完成了前进判断。
上面是一种正常的情况。
但是假如我们有点页面重复进入了呢。
就如以下这种情况
A页面 -> B页面 -> C页面 -> B页面 -> C页面
现在走了5步,到达了第二个C页面, 然后我们后退一步,到达了B页面
这个时候问题就出来了,我们是删除第一个B页面后面的路径还是删除第二个B页面后面的路径
我们先试着删除第二个B页面的路径,那么我们还保存的路径就是: ['/a', '/b', '/c', '/b']。
1、那这个时候我们按照上面正常情况的逻辑来操作.
我点击前进, 然后我去保存的路径里面找,找不到就算前进, 找到证明是后退。
那么结果显而易见,我们找到了第一个C页面,那就这样就算后退了,但其实我点击的时前进
2、那我们试着删除第一个B页面后面的路径,那么保存的路径就是: ['/a', '/b'],
那么我在点击后退按钮,这时候他其实会进入C页面, 我们可以看以下流程图
这个时候我们在此点击后退按钮,就会到C页面, 但是保存的路径里面 `'/c'` 已经被我删除了, 所以判断出来的是前进。
1、如果我们过滤重复的页面路径,是不是就会好了呢,其实也是一样的
假如我们有5个页面路径,过滤了2个重复的,只有3个页面路径了
那么我退到第四个路径的时候是不是就找不到了, 那么后面两个页面都会算作前进。
所以以目前来看,最好的办法就是记录每一个页面,但是每个页面,都让他有区别
那么我们就可以在url上面放一个随机字符串
代码实现:
// 当没有key的时候会进入两次 beforeEach,我们只需保存带key的就行 const updateNavigations = (to) => { if (to.query[pathKey]) { store.commit('UPDATE_NAVIGATIONS', {path: to.fullPath}) } } router.beforeEach((to, from, next) => { let toIndex = store.state.navigations.findIndex(path => path === to.fullPath) if (toIndex >= 0) { // 存在该路径 let len = store.state.navigations.length-1 if (toIndex === len) { // 当前路径是最后一条,证明是同一个页面 console.log('refresh') } else { // 后退 store.commit('UPDATE_ROUTER_DIRECTION', { routerDirection: 'back' }) // 后退标志 store.commit('DELETE_NAVIGATION', { index: toIndex }) // 删除当前路径后面的路径 } }else{ // 不存在该路径 store.commit('UPDATE_ROUTER_DIRECTION', { routerDirection: 'forward' }) // 前进标志 updateNavigations(to) // 保存该连接 } const query = { ...to.query } // 存在就直接next, 防止死循环 if (!query['APP_KEY']) { // 不存在添加key ,再次 next query['APP_KEY'] = Math.random().toString(16).substring(2) next({ path: to.path, query}) }else{ next() } })
以上代码我们就能就url中添加一个 APP_KEY 的随机串,那样就算同一个页面在我们保存的路径里面也是其实是不同的。就可以正常的执行逻辑了
上面就基本解决了浏览器导航栏的问题了
2. IOS上的滑动切换
在IOS的网页上, 是可以左右滑动进行切换,即使你没有做转场动画。
这个时候就会出现一个问题。
还是ABC页面
A -> B -> C
当我们到达C页面,然后向左滑动时,滑完他就进入B页面,但是这这时它还是会进入我们的 beforeEach 这个钩子函数里面,执行我们上面的逻辑。
那样就会触发我们的转场动画。你就会发现执行了两次切换。
于是我在网上找到了一种方法fix ios左滑再次执行动画 #2259
代码是这样的
let touchEndTime = Date.now() window.addEventListener('touchend', () => { touchEndTime = Date.now() }) router.beforeEach((to, from, next) => { if ((Date.now() - touchEndTime) < 377) { // ios滑动切换 store.commit('UPDATE_ROUTER_DIRECTION', { routerDirection: '' }) } })
上面也很好理解, 就是我们取到手指最后离开的屏幕的那一刻, 然后在到 beforeEach里面进行比较,
当手指离开屏幕的最后一刻跟我们自己 beforeEach里面进行的转场相差小于 337, 就算是IOS的滑动切换
那样就解决了IOS的滑动切换问题了。
但是IOS的右滑切换时监听不到手指离开屏幕的那一刻的(也不知道是什么鬼), 所以IOS的右滑切换,是没法像上面那样判断的。
这个我也没找到解决办法, 暂时只能解决IOS左滑返回的切换。
基本上遇到的比较麻烦的两个点就是上面这两个点了,其余都是可以通过监听事件进行设置,倒也没什么难度
在线DEMO演示
相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!
推荐阅读:
Atas ialah kandungan terperinci vue移动端路由切换案例解析. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Penjelasan terperinci tentang ralat Oracle 3114: Bagaimana untuk menyelesaikannya dengan cepat, contoh kod khusus diperlukan Semasa pembangunan dan pengurusan pangkalan data Oracle, kami sering menghadapi pelbagai ralat, antaranya ralat 3114 adalah masalah yang agak biasa. Ralat 3114 biasanya menunjukkan masalah dengan sambungan pangkalan data, yang mungkin disebabkan oleh kegagalan rangkaian, pemberhentian perkhidmatan pangkalan data atau tetapan rentetan sambungan yang salah. Artikel ini akan menerangkan secara terperinci punca ralat 3114 dan cara menyelesaikan masalah ini dengan cepat, dan melampirkan kod tertentu

Xiaomi 14Ultra adalah salah satu model Xiaomi yang paling popular tahun ini bukan sahaja menaik taraf pemproses dan pelbagai konfigurasi, tetapi juga membawa banyak aplikasi berfungsi kepada pengguna Ini boleh dilihat dari jualan telefon bimbit Xiaomi 14Ultra popular, tetapi terdapat beberapa fungsi yang biasa digunakan yang mungkin belum anda ketahui. Jadi bagaimanakah Xiaomi 14Ultra bertukar antara 4g dan 5g? Izinkan saya memperkenalkan kandungan khusus kepada anda di bawah! Bagaimana untuk menukar antara 4g dan 5g pada Xiaomi 14Ultra? 1. Buka menu tetapan telefon anda. 2. Cari dan pilih pilihan "Rangkaian" dan "Rangkaian Mudah Alih" dalam menu tetapan. 3. Dalam tetapan rangkaian mudah alih, anda akan melihat pilihan "Jenis rangkaian pilihan". 4. Klik atau pilih pilihan ini dan anda akan melihat

Bagaimana untuk menukar Win11 Home Edition kepada Win11 Professional Edition? Dalam sistem Win11, ia dibahagikan kepada Home Edition, Professional Edition, Enterprise Edition, dan lain-lain, dan kebanyakan komputer riba Win11 telah dipasang dengan sistem Win11 Home Edition. Hari ini, editor akan menunjukkan kepada anda langkah-langkah untuk beralih daripada versi rumah win11 kepada versi profesional 1. Pertama, klik kanan pada komputer ini pada desktop dan sifat win11. 2. Klik Tukar Kunci Produk atau Tingkatkan Windows. 3. Kemudian klik Tukar Kunci Produk selepas memasukkan. 4. Masukkan kekunci pengaktifan: 8G7XN-V7YWC-W8RPC-V73KB-YWRDB dan pilih Seterusnya. 5. Kemudian ia akan mendorong kejayaan, jadi anda boleh menaik taraf versi rumah win11 kepada versi profesional win11.

Cara bertukar antara sistem dwi Apple apabila memulakan komputer Apple adalah peranti berkuasa Selain sistem pengendalian macOS mereka sendiri, anda juga boleh memilih untuk memasang sistem pengendalian lain, seperti Windows, untuk mencapai pensuisan dwi sistem. Jadi bagaimana kita bertukar antara kedua-dua sistem semasa boot? Artikel ini akan memperkenalkan kepada anda cara menukar antara sistem dwi pada komputer Apple. Pertama sekali, sebelum memasang sistem dwi, kami perlu mengesahkan sama ada komputer Apple kami menyokong pensuisan dwi sistem. Secara umumnya, komputer Apple adalah berasaskan

[Analisis makna dan penggunaan titik tengah dalam PHP] Dalam PHP, titik tengah (.) ialah operator yang biasa digunakan untuk menyambung dua rentetan atau sifat atau kaedah objek. Dalam artikel ini, kami akan menyelami makna dan penggunaan titik tengah dalam PHP, menggambarkannya dengan contoh kod konkrit. 1. Operator titik tengah rentetan Concatenate Penggunaan yang paling biasa dalam PHP adalah untuk menggabungkan dua rentetan. Dengan meletakkan . antara dua rentetan, anda boleh menyambungkannya untuk membentuk rentetan baharu. $string1=&qu

Dalam aplikasi perisian excel, kita terbiasa menggunakan kekunci pintasan untuk membuat beberapa operasi lebih mudah dan lebih cepat Kadang-kadang terdapat data yang berkaitan antara beberapa jadual dalam excel Apabila kita melihatnya, kita perlu sentiasa bertukar antara tugas kaedah pensuisan yang lebih cepat, ia akan menjimatkan banyak masa yang terbuang pada pensuisan, yang akan sangat membantu meningkatkan kecekapan kerja Apakah kaedah yang boleh digunakan untuk menyelesaikan isu ini, editor akan membincangkannya hari ini Kandungannya ialah: Bagaimana untuk menggunakan kekunci pintasan untuk menukar buku kerja dalam Excel. 1. Mula-mula, anda boleh melihat berbilang buku kerja di bahagian bawah jadual excel terbuka Anda perlu bertukar dengan cepat antara buku kerja yang berbeza, seperti yang ditunjukkan dalam rajah di bawah. 2. Kemudian tekan kekunci Ctrl pada papan kekunci tanpa bergerak, dan pilih kerja di sebelah kanan jika anda perlu

Wormhole ialah peneraju dalam kebolehkendalian blockchain, memfokuskan pada mencipta sistem terdesentralisasi yang berdaya tahan, kalis masa hadapan yang mengutamakan pemilikan, kawalan dan inovasi tanpa kebenaran. Asas visi ini ialah komitmen terhadap kepakaran teknikal, prinsip etika dan penjajaran komuniti untuk mentakrifkan semula landskap kebolehoperasian dengan kesederhanaan, kejelasan dan rangkaian luas penyelesaian berbilang rantaian. Dengan peningkatan bukti pengetahuan sifar, penyelesaian penskalaan dan piawaian token yang kaya dengan ciri, rantaian blok menjadi lebih berkuasa dan kesalingoperasian menjadi semakin penting. Dalam persekitaran aplikasi yang inovatif ini, sistem tadbir urus baharu dan keupayaan praktikal membawa peluang yang belum pernah berlaku sebelum ini kepada aset merentas rangkaian. Pembina protokol kini bergelut dengan cara untuk beroperasi dalam pelbagai rantaian yang muncul ini

Dengan perkembangan pesat telefon pintar, Huawei, sebagai syarikat teknologi terkemuka, telah melancarkan banyak produk telefon mudah alih yang popular. Antaranya, sistem dual Huawei merupakan ciri yang membuatkan ramai pengguna teruja. Melalui sistem dwi Huawei, pengguna boleh menjalankan dua sistem pengendalian, seperti Android dan HarmonyOS, pada telefon mudah alih yang sama pada masa yang sama. Ciri ini membolehkan fleksibiliti dan kemudahan yang lebih besar. Jadi, bagaimana untuk menukar tetapan antara sistem dwi Huawei? Mari kita ketahui bersama. Pertama, sebelum beralih kepada persediaan sistem dwi pada telefon Huawei anda,
