Home Web Front-end uni-app Route lost after uniapp refresh

Route lost after uniapp refresh

May 22, 2023 am 10:29 AM

When using uniapp to develop applications, we often encounter the problem of route loss after page refresh. This problem is very common in development, but it is not very difficult to solve. This article will delve into the causes and solutions to this problem.

1. Why does the problem of route loss occur?

In uniapp, we use vue-router for routing management. In vue-router, routing management is implemented through the browser's URL address. When we refresh the page, the browser will reload the page and also refresh the URL address, which leads to the problem of routing loss.

In order to better understand this problem, we can first take a look at the routing mode of vue-router. vue-router provides two routing modes: hash and history. The hash pattern refers to the part of the URL address starting with the # symbol, for example: http://example.com/#/home. The history mode refers to the part of the URL address that does not contain the # symbol, for example: http://example.com/home.

In hash mode, routing management is implemented through window.location.hash. When refreshing the page, the browser reloads the page and window.location.hash does not change, so the routing information is not lost. In history mode, routing management is implemented through window.location.pathname. When refreshing the page, the browser will reload the page and window.location.pathname will change, which leads to the problem of routing information being lost.

2. How to avoid the problem of route loss?

In order to avoid the problem of route loss, we can take the following measures:

  1. Force the use of hash mode

In uniapp, we can pass in main Set the mode attribute in .js to force the use of hash mode. The sample code is as follows:

import Vue from 'vue'
import App from './App'
import router from './router'

Vue.config.productionTip = false

new Vue({
  el: '#app',
  router,
  mode: 'hash', // 强制使用hash模式
  render: h => h(App)
})
Copy after login
  1. Save routing information before page refresh

We can store routing information in localStorage in the window.onbeforeunload event. The code example is as follows:

mounted() {
  // 监听onbeforeunload事件,保存路由信息
  window.onbeforeunload = () => {
    localStorage.setItem('lastRoute', this.$route.fullPath)
  }
}
Copy after login

After the page is loaded, we can determine whether we need to jump to the previous routing page by determining whether lastRoute exists in localStorage. The code example is as follows:

mounted() {
  // 判断是否存在lastRoute,若存在则跳转到之前的路由页面
  const lastRoute = localStorage.getItem('lastRoute')
  if (lastRoute) {
    localStorage.removeItem('lastRoute')
    this.$router.replace(lastRoute)
  }
}
Copy after login
Copy after login
  1. Use the hook function before the route jump

Before each route jump, we can use the beforeEach hook function before the jump. Save the current routing information so that the routing status can be restored after the page is refreshed. The code example is as follows:

router.beforeEach((to, from, next) => {
  localStorage.setItem('lastRoute', from.fullPath) // 保存当前路由信息
  next()
})
Copy after login

After the page is loaded, we can determine whether we need to jump to the previous routing page by determining whether lastRoute exists in localStorage. The code example is as follows:

mounted() {
  // 判断是否存在lastRoute,若存在则跳转到之前的路由页面
  const lastRoute = localStorage.getItem('lastRoute')
  if (lastRoute) {
    localStorage.removeItem('lastRoute')
    this.$router.replace(lastRoute)
  }
}
Copy after login
Copy after login

Summary:

Route loss is a common problem in uniapp development, but we can easily avoid this problem through the above three methods. When developing applications using uniapp, we should fully understand the routing mode of vue-router and take appropriate measures to solve the problem of route loss.

The above is the detailed content of Route lost after uniapp refresh. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: How To Unlock Everything In MyRise
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How do I use uni-app's social sharing APIs? How do I use uni-app's social sharing APIs? Mar 13, 2025 pm 06:30 PM

The article details how to integrate social sharing into uni-app projects using uni.share API, covering setup, configuration, and testing across platforms like WeChat and Weibo.

How do I use preprocessors (Sass, Less) with uni-app? How do I use preprocessors (Sass, Less) with uni-app? Mar 18, 2025 pm 12:20 PM

Article discusses using Sass and Less preprocessors in uni-app, detailing setup, benefits, and dual usage. Main focus is on configuration and advantages.[159 characters]

How do I use uni-app's animation API? How do I use uni-app's animation API? Mar 18, 2025 pm 12:21 PM

The article explains how to use uni-app's animation API, detailing steps to create and apply animations, key functions, and methods to combine and control animation timing.Character count: 159

What are the different types of testing that you can perform in a UniApp application? What are the different types of testing that you can perform in a UniApp application? Mar 27, 2025 pm 04:59 PM

The article discusses various testing types for UniApp applications, including unit, integration, functional, UI/UX, performance, cross-platform, and security testing. It also covers ensuring cross-platform compatibility and recommends tools like Jes

How can you reduce the size of your UniApp application package? How can you reduce the size of your UniApp application package? Mar 27, 2025 pm 04:45 PM

The article discusses strategies to reduce UniApp package size, focusing on code optimization, resource management, and techniques like code splitting and lazy loading.

How do I use uni-app's storage API (uni.setStorage, uni.getStorage)? How do I use uni-app's storage API (uni.setStorage, uni.getStorage)? Mar 18, 2025 pm 12:22 PM

The article explains how to use uni-app's storage APIs (uni.setStorage, uni.getStorage) for local data management, discusses best practices, troubleshooting, and highlights limitations and considerations for effective use.

What is the file structure of a uni-app project? What is the file structure of a uni-app project? Mar 14, 2025 pm 06:55 PM

The article details the file structure of a uni-app project, explaining key directories like common, components, pages, static, and uniCloud, and crucial files such as App.vue, main.js, manifest.json, pages.json, and uni.scss. It discusses how this o

How can you optimize images for web performance in UniApp? How can you optimize images for web performance in UniApp? Mar 27, 2025 pm 04:50 PM

The article discusses optimizing images in UniApp for better web performance through compression, responsive design, lazy loading, caching, and using WebP format.

See all articles