当前位置:网站首页>项目-h5列表跳转详情,实现后退不刷新,修改数据则刷新的功能(记录滚动条)
项目-h5列表跳转详情,实现后退不刷新,修改数据则刷新的功能(记录滚动条)
2022-06-27 05:29:00 【大只兔】
最近项目遇到一个需求,要求实现从列表进入详情,详情页面点击后退,页面停留在进入详情时的列表也main,即实现后退不刷新的功能,但详情也可以改变列表数据,提交详情数据需要重新获取列表数据
首先这是一个移动端项目,使用的了两个tab来展示两个列表,一个是待评分,一个是已评分,待评分数据评分后就会变成已评分数据,所以就要实现详情页面返回,列表页面不变不刷新,提交评分数据,页面就要重新加载数据
上网搜了很多教程,大多数使用的是keep-alive来进行页面缓存,所以我也是采用的keep-alive的方法。
1、对需要缓存的页面添加meta参数
在路由的route文件夹下,这里我的routes路由配置是单独抽出来的一个文件,不抽出来的就是在router/index.js文件里面
const routes = [
{
path: '/XXX',
name: '组件名',
meta: {
keepAlive: true
},
component: 页面组件名称,
}
]
2、在router/index.js文件中添加
const router = new Router({
mode: 'history',
routes,
scrollBehavior (to, from, savedPosition) {
if (savedPosition) {
return savedPosition
}
if (from.meta.keepAlive) {
from.meta.savedPosition = document.body.scrollTop // 此处为记录的滚动条位置
}
from.meta.savedPosition = document.body.scrollTop
return {
x: 0, y: to.meta.savedPosition || 0 }
}
})
3、点击返回的方法,使用back
back会使页面不刷新
this.$router.back(-1)
4、在app.js中使用keep-alive
这里使用 :key=“$route.fullPath”, 会使组件强制不复用,因为如果没有这个属性,组件就会有一个复用性,而添加这个属性就是为了在页面提交修改数据时,能够对列表数据进行重新渲染
<div id="app">
<keep-alive >
<router-view v-if="$route.meta.keepAlive" :key="$route.fullPath"></router-view>
</keep-alive>
<router-view v-if="!$route.meta.keepAlive"></router-view>
</div>
5、需要重新渲染数据时
在详情页面提交数据时,就需要重新获取数据
这里给列表页面组件路径添加一个随机query数据,因为前面的路由的 :key=“$route.fullPath” ,点击提交数据后,通过这个push返回就能够重新加载页面了,其他时候页面会保持一个缓存状态,不会刷新。
this.$router.push({
path: '/列表路径',
query: {
'randomID': 'id' + Math.random() },
})
边栏推荐
- DAST 黑盒漏洞扫描器 第六篇:运营篇(终)
- 011 C language basics: C scope rules
- Some articles about component packaging and my experience
- C language implementation timer
- Deep dive kotlin synergy (XV): Test kotlin synergy
- Microservice system design - service fusing and degradation design
- 什么是BFC?有什么用?
- 【FPGA】 基于FPGA分频,倍频设计实现
- Web3还没实现,Web5乍然惊现!
- Mechanical transcoding journal [17] template, STL introduction
猜你喜欢

Web3还没实现,Web5乍然惊现!

Microservice system design -- distributed transaction service design

Two position relay xjls-8g/220

关于元器件封装的一些文章和一下我的体会

Redis高可用集群(哨兵、集群)

Cognition - how to fill in 2022 college entrance examination volunteers

Web3 has not been implemented yet, web5 suddenly appears!

Deep dive kotlin synergy (XV): Test kotlin synergy

How pychart installs packages
![[nips 2017] pointnet++: deep feature learning of point set in metric space](/img/3e/0a47eecc27f236d629c611e683b37a.png)
[nips 2017] pointnet++: deep feature learning of point set in metric space
随机推荐
双位置继电器JDP-1440/DC110V
双位置继电器XJLS-8G/220
[C language] keyword supplement
Microservice system design -- distributed cache service design
Mechanical transcoding journal [17] template, STL introduction
Common programming abbreviations for orbit attitude
Qt使用Valgrind分析内存泄漏
Navigation [machine learning]
Unity中跨平台获取系统音量
机械转码日记【17】模板,STL简介
011 C language basics: C scope rules
014 C language foundation: C string
Microservice system design -- message caching service design
Web3 has not been implemented yet, web5 suddenly appears!
Unity中跨平臺獲取系統音量
012 C language foundation: C array
Py2neo basic syntax
快速排序(非递归)和归并排序
【FPGA】 基于FPGA分频,倍频设计实现
双位置继电器DLS-34A DC0.5A 220VDC