


How to achieve the effect of forward refresh and back without refresh in vue
This article mainly introduces the effect of Vue's forward refresh and backward non-refresh, that is, the loaded interface can be cached (returning without reloading), and the closed interface can be destroyed (reloaded when re-entering). This article will share with you the implementation ideas. Friends who need it can refer to
I have recently tried to do mobile projects using vue. I hope to achieve the effect of forward refresh and backward non-refresh. That is, the loaded interface can be cached (no need to reload when returning), and the closed interface can be destroyed (reloaded when re-entering). For example, a->b->c moves forward (b, c) and refreshes, and c->b->a moves backward (b, a) without refreshing.
Because keep-alive
will cache all loaded interfaces, it is impossible to destroy the interface when returning, resulting in the interface not being reloaded when re-entering. So the first solution that comes to mind is to call this.$destroy(true)
to destroy the interface when clicking the return button on the interface. However, there will be a physical return key on mobile Android devices. If you return through the physical return key, there will be no way to handle it. Although the return event of Android can be rewritten to call the js method, the global method of js is called, and the interface on the top layer cannot be specifically destroyed.
So we need to find another way. Fortunately, this article inspired me to keep-alive of vue-router. Thank you to the author for sharing.
It would be nice if I could know whether the route is forward or backward. In this way, I can set the keepAlive of the from route to false and the keepAlive of the to route to true when going backward, so that I can set the keepAlive of the to route to true when going forward again. , reload the route whose keepAlive was set to false before.
No more nonsense, there are three interfaces simulated here, login to server to main.
First of all, I set a strict hierarchical relationship for the paths of these three interface routes, and set keepAlive to be true, which requires caching by default.
const router = new Router({ routes: [ { path: '/', redirect: '/login' }, { path: '/login', component: Login, meta: { keepAlive: true } }, { path: '/login/server', component: ServerList, meta: { keepAlive: true } }, { path: '/login/server/main', component: Main, meta: { keepAlive: true } } ] })
Since the paths of these three interfaces are at different levels, I can use the beforeEach hook to determine when to go back. When going back, set the keepAlive of the from route to false and the keepAlive of the to route to true.
router.beforeEach((to, from, next) => { const toDepth = to.path.split('/').length const fromDepth = from.path.split('/').length if (toDepth < fromDepth) { console.log('后退。。。') from.meta.keepAlive = false to.meta.keepAlive = true } next() })
Wrap the last interface that needs to be cached with keep-alive
to achieve the effect of refreshing when going forward and not refreshing when going back. .
<keep-alive> <router-view v-if="$route.meta.keepAlive"> <!-- 这里是会被缓存的视图组件 --> </router-view> </keep-alive> <router-view v-if="!$route.meta.keepAlive"> <!-- 这里是不被缓存的视图组件 --> </router-view>
The above is the entire content of this article. I hope it will be helpful to everyone’s study. For more related content, please pay attention to the PHP Chinese website!
Related recommendations:
Vue.js 2.0 Implementation of mobile camera compression image upload preview function
vue2.0 More examples of implementing pull-down refresh and pull-up loading on the mobile side
The above is the detailed content of How to achieve the effect of forward refresh and back without refresh in vue. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

Using Bootstrap in Vue.js is divided into five steps: Install Bootstrap. Import Bootstrap in main.js. Use the Bootstrap component directly in the template. Optional: Custom style. Optional: Use plug-ins.

You can add a function to the Vue button by binding the button in the HTML template to a method. Define the method and write function logic in the Vue instance.

The watch option in Vue.js allows developers to listen for changes in specific data. When the data changes, watch triggers a callback function to perform update views or other tasks. Its configuration options include immediate, which specifies whether to execute a callback immediately, and deep, which specifies whether to recursively listen to changes to objects or arrays.

Vue multi-page development is a way to build applications using the Vue.js framework, where the application is divided into separate pages: Code Maintenance: Splitting the application into multiple pages can make the code easier to manage and maintain. Modularity: Each page can be used as a separate module for easy reuse and replacement. Simple routing: Navigation between pages can be managed through simple routing configuration. SEO Optimization: Each page has its own URL, which helps SEO.

There are three ways to refer to JS files in Vue.js: directly specify the path using the <script> tag;; dynamic import using the mounted() lifecycle hook; and importing through the Vuex state management library.

Vue.js has four methods to return to the previous page: $router.go(-1)$router.back() uses <router-link to="/" component window.history.back(), and the method selection depends on the scene.

There are three common methods for Vue.js to traverse arrays and objects: the v-for directive is used to traverse each element and render templates; the v-bind directive can be used with v-for to dynamically set attribute values for each element; and the .map method can convert array elements into new arrays.

There are two ways to jump div elements in Vue: use Vue Router and add router-link component. Add the @click event listener and call this.$router.push() method to jump.
