uni-app #bug# 录的视频已存在待跳转页面/pages/detail/goodsinfo 请不要连续多次跳转页面/pages/detail/goodsinfo
uni-app #bug# 录的视频已存在待跳转页面/pages/detail/goodsinfo 请不要连续多次跳转页面/pages/detail/goodsinfo
问题:自定义基座运行 最新版HB开发工具, 页面跳转用的是 navigateTo ,只要我页面一秒内快点几次页面,IDE控制台就会出现上图的这种,,,app上面再点任何按钮 都会无任何反应,,,官方能否给个答复,,
请求过去的页面 是读取网络数据的, 不读取网络数据的出现的频率少, 我想知道是我的问题 还是大家都有这种问题啊
uni.navigateTo({
url: '/pages/member/publisher?uid=' + userId + '&token=' + token
});
百度一下 很多人遇到这种问题 应该不是我一个人的问题, https://www.baidu.com/s?ie=UTF-8&wd=已存在待跳转页面,请不要连续多次跳转页面/pages/detail/goodsinfo
然后我又新建了一个新的hello uniapp项目(演示uni-app框架的组件 接口 模板)打开去快速点击新闻详情到列表,,发现快速点击也能出现这种问题,,再下面附件中(完整问题再现.zip)
防抖节流了解一下
感谢老铁的提醒,思路顿时清晰
压缩包里是我录的问题再现视频,
我也遇到这个问题了
针对你提到的 uni-app
中关于页面跳转的问题,即在检测到视频已存在于待跳转页面 /pages/detail/goodsinfo
时,避免连续多次跳转至同一页面,可以通过多种方式来实现。这里提供一个基于 Vue 框架和 uni-app
提供的 API 的代码示例,利用 Vuex 状态管理以及页面路由守卫来实现这一功能。
1. 使用 Vuex 管理视频状态
首先,在 Vuex 中创建一个状态来跟踪当前是否已打开某个视频的详情页面。
// store/index.js
import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex);
export default new Vuex.Store({
state: {
isGoodsInfoPageOpen: false // 用于标记 goodsinfo 页面是否已打开
},
mutations: {
setGoodsInfoPageOpen(state, isOpen) {
state.isGoodsInfoPageOpen = isOpen;
}
},
actions: {
toggleGoodsInfoPage({ commit }, isOpen) {
commit('setGoodsInfoPageOpen', isOpen);
}
}
});
2. 在页面组件中使用 Vuex 状态
在触发跳转的组件中,先检查 Vuex 状态,再决定是否进行页面跳转。
// 触发跳转的组件
<template>
<view>
<button @click="navigateToGoodsInfo">查看视频详情</button>
</view>
</template>
<script>
import { mapState, mapActions } from 'vuex';
export default {
computed: {
...mapState(['isGoodsInfoPageOpen'])
},
methods: {
...mapActions(['toggleGoodsInfoPage']),
navigateToGoodsInfo() {
if (!this.isGoodsInfoPageOpen) {
this.$store.dispatch('toggleGoodsInfoPage', true);
uni.navigateTo({
url: '/pages/detail/goodsinfo'
});
} else {
// 可选:提示用户页面已打开或执行其他逻辑
uni.showToast({
title: '视频详情页已打开',
icon: 'none'
});
}
}
},
onUnload() {
// 页面卸载时重置状态
this.$store.dispatch('toggleGoodsInfoPage', false);
}
};
</script>
3. 注意事项
- 确保在离开
/pages/detail/goodsinfo
页面时重置isGoodsInfoPageOpen
状态,避免状态不一致。 - 考虑到用户可能通过其他方式(如返回按钮)离开详情页,
onUnload
生命周期函数是一个合适的重置状态的位置。 - 上述代码示例未包含所有可能的边界情况处理,如应用进入后台、页面被系统回收等,根据实际需求可能需要进一步完善。
通过上述方法,可以有效避免在 uni-app
中因检测到视频已存在于待跳转页面时而导致的连续多次跳转问题。