vue H5列表页面 点击跳转看详情 返回列表页保持在当前位置,代码如何实现
时间: 2024-05-09 19:14:56 浏览: 154
你可以使用 `keep-alive` 组件来缓存列表页,以保持其状态不变。然后使用路由参数来传递当前位置的信息。在跳转到详情页时,将当前位置信息作为参数传递给详情页,以便在返回时能够准确地回到原来的位置。
以下是示例代码:
列表页:
```html
<template>
<div>
<keep-alive>
<ul>
<li v-for="item in items" :key="item.id">
<router-link :to="{ name: 'detail', params: { id: item.id, position: getPosition() } }">{{ item.title }}</router-link>
</li>
</ul>
</keep-alive>
</div>
</template>
<script>
export default {
data() {
return {
items: [...], // 列表数据
scrollTop: 0 // 当前滚动位置
}
},
methods: {
getPosition() {
// 获取当前滚动位置
return this.$refs.list.scrollTop
}
},
mounted() {
// 监听滚动事件,更新滚动位置
this.$refs.list.addEventListener('scroll', () => {
this.scrollTop = this.$refs.list.scrollTop
})
}
}
</script>
```
详情页:
```html
<template>
<div>
<h1>{{ item.title }}</h1>
<p>{{ item.content }}</p>
<button @click="goBack">返回</button>
</div>
</template>
<script>
export default {
data() {
return {
item: {}, // 详情数据
position: 0 // 列表页滚动位置
}
},
methods: {
goBack() {
// 返回列表页,并滚动到原来的位置
this.$router.back()
setTimeout(() => {
this.$refs.list.scrollTop = this.position
}, 0)
}
},
mounted() {
// 获取详情数据
const id = this.$route.params.id
this.item = this.items.find(item => item.id === id)
// 获取列表页滚动位置
this.position = this.$route.params.position
}
}
</script>
```
注意,以上代码仅为示例,具体实现可能需要根据实际情况进行调整。
阅读全文