【uniapp】uniapp手机端使用uni.navigateBack失效问题解决

项目所用的技术:
uniapp手机端底部的导航栏用的是colorUI中自定义的,并不是uniapp中原生的tabbar
目前问题:
点不同的tabbar可以显示不同的UI页面,关键是页面UI都在一个URL地址中,也就是说不管切换到哪个tabbar,显示的都是根路径: /。
在这里插入图片描述
目前需求:
需要实现在一个订单成功的页面,点击 < 后退两个页面到商城列表页,且底部要显示对应高亮的tabbar,用的uni.navigateBack没有效果,具体原因现在还不太清楚。
用了this.$router.go(-2)在浏览器模拟端实现没问题,但是打包到手机上还是不行,如下图:
在这里插入图片描述
于是开启了漫无目的的找bug,试解决方法…
后面发现用 vue 组件之间兄弟传值的方式可以实现,需要先在项目根目录下新建一个 bus.js 文件

import Vue from 'vue'
export default new Vue()

在需要发送数据的文件中,传递数据

<script>
  import bus from '@/bus.js'
  export default {
    name: 'orderSuccess',
    methods: {
      gotoMall() {
        // 先跳转到首页 
        uni.navigateTo({
          url: '/pages/index/index'
        })
        // 传递一个 mall 字段过去
        bus.$emit('changeBar', 'mall')
      },
    }
  }
</script>

然后在需要接受数据的文件中通过 $emit.on 接收

<script>
  import bus from '@/bus.js'
  export default {
  	data(){
		return {
			PageCur: 'indexpage', // 默认底部导航栏的首页高亮
	        commponent1Key: 0,
	        commponent2Key: 0,
	        commponent3Key: 0,
	        commponent4Key: 0,
	        commponent5Key: 0,
		}
	},
	created() {
	  // val 拿到的就是传过来的 mall 字段
      bus.$on('changeBar', val => (this.PageCur = val))
    }
  }
</script>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
uni.navigateBack()方法在uni-app中用于返回上一页面。然而,有时候在刷新当前页面后,使用该方法无法返回上一页面。这个问题可以通过以下几种方法解决。 一种解决方法是使用原生的history对象来替代uni.navigateBack()方法。可以封装一个兼容uni-app API和原生JS的返回方法,如下所示: ```javascript const navigateBack = (params) => { const pages = getCurrentPages() if (pages.length === 1) { if (typeof params === 'number') { history.go(-params) } else { history.back() } } else { uni.navigateBack() } } ``` 这个方法会先判断当前页面的数量,如果只有一个页面,则使用原生的history对象进行返回操作;如果有多个页面,则使用uni.navigateBack()方法进行返回操作。这样可以解决刷新页面后无法返回的问题。\[3\] 另一种解决方法是在返回的方法中进行替换。可以使用以下代码来判断是否可以返回上一页面,并进行相应的操作: ```javascript let canNavBack = getCurrentPages() if (canNavBack && canNavBack.length > 1) { uni.navigateBack() } else { history.back() } ``` 这段代码会先获取当前页面的数量,如果大于1,则使用uni.navigateBack()方法进行返回操作;如果等于1,则使用history.back()方法进行返回操作。这样也可以解决无法返回上一页面的问题。\[2\] 综上所述,以上两种方法都可以解决uni.navigateBack()无法返回上一页面的问题。你可以根据自己的需求选择其中一种方法来解决问题。 #### 引用[.reference_title] - *1* [uni-app中使用uni.navigateBack()方法返回上一页面时,如果刷新当前页面则出现无法返回上一页面问题](https://blog.csdn.net/C_B_Y/article/details/125720619)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [uniapp刷新页面后使用uni.navigateBack()无法返回上个页面](https://blog.csdn.net/weixin_67434908/article/details/129204627)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [uniapp-H5页面刷新后返回失效,页面栈清空问题navigateBack失效问题](https://blog.csdn.net/qq_43205326/article/details/125159266)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值