微信小程序如何返回上一页的左上角小房子的坑

微信小程序如何返回上一页的左上角小房子的坑

头一次写小程序,写了几个插件和几个页面,写完后发现返回上一页的时候是直接返回到首页了

出现这一问题的唯一线索就是左上角的小房子,点击小房子会直接退回到首页,于是我拼命的找修改小房子api,结果浪费了好长时间。

实际上出现的问题是我在跳转页面的时候选择了wx.relaunch(关闭所有页面,打开到应用内的某个页面),它出现的问题就是会出现小房子。

然后我就把跳转页面的 wx.relaunch() 改成了 wx.navigateTo()

示例:

wx.relaunch

代码部分

页面部分

修改后——
wx.navigateTo
在这里插入图片描述
在这里插入图片描述
完成了

### 修改 UniApp 左上角小房子图标的行为 在 UniApp 开发中,当所有页面被关闭后,微信小程序左上角返回按钮会自动变为一个小房子图标,这是因为当前已无上级页面可供返回[^2]。要调整该小房子图标的点击行为并自定义导航栏功能,可以通过以下方式实现: #### 方法一:通过 `onUnload` 和 `navigateBack` 控制页面栈 如果希望改变默认的小房子图标跳转到首页的行为,可以在应用逻辑中控制页面栈的状态。例如,在某些特定场景下保留部分页面而不完全清空页面栈。 ```javascript // 在需要保持页面栈的页面生命周期方法 onUnload 中处理 export default { onUnload() { // 防止页面被销毁从而避免触发小房子图标 const pages = getCurrentPages(); if (pages.length === 1) { // 如果只剩下一个页面,则手动设置返回路径 uni.redirectTo({ url: '/pages/login/login' // 替换为目标页面路径 }); } } } ``` 此方法适用于简单的页面管理需求,但对于复杂的应用结构可能不够灵活[^1]。 --- #### 方法二:自定义顶部导航栏 为了更自由地定制左上角按钮的功能,可以隐藏默认的微信小程序导航栏,并使用自定义组件替代。具体步骤如下: 1. **隐藏原生导航栏** 在项目的配置文件 `manifest.json` 或单个页面的配置中禁用默认导航栏: ```json { "usingComponents": true, "navigationBarTitleText": "", "navigationStyle": "custom" } ``` 2. **创建自定义导航栏组件** 利用 Vue 组件构建一个带有返回箭头或其他图标的导航栏。以下是简单示例代码: ```html <!-- custom-navbar.vue --> <template> <view class="navbar"> <image src="/static/back-arrow.png" @tap="handleBack"></image> <!-- 返回按钮 --> <text>{{ title }}</text> <!-- 页面标题 --> </view> </template> <script> export default { props: ['title'], methods: { handleBack() { // 定义返回逻辑 uni.navigateBack(); // 默认返回一页 // 或者指定目标页面 // uni.reLaunch({ url: '/pages/home/home' }); } } }; </script> <style scoped> .navbar { display: flex; align-items: center; height: 80rpx; /* 导航高度 */ padding: 0 20rpx; background-color: #fff; } image { width: 40rpx; height: 40rpx; } text { margin-left: 20rpx; font-size: 36rpx; } </style> ``` 3. **引入自定义导航栏至页面** 将上述组件嵌入到需要替换默认导航栏的页面中: ```vue <template> <view> <custom-navbar :title="'我的页面'" /> <view>这里是页面主体</view> </view> </template> <script> import CustomNavbar from '@/components/custom-navbar'; export default { components: { CustomNavbar } }; </script> ``` 这种方法允许开发者完全掌控左上角按钮的行为以及整个导航区域的设计[^3]。 --- #### 方法三:动态修改全局路由策略 对于更加复杂的业务场景,比如多个入口点均需统一调整小房子图标的指向位置,可通过监听全局事件来干预路由变化过程。例如利用 `onShow` 生命周期函数检测当前页面状态并重定向: ```javascript export default { onShow(options) { const pages = getCurrentPages(); if (pages.length === 1 && options.scene !== 'launch') { // 当前仅剩一个页面且不是首次启动时强制回到登录页 uni.reLaunch({ url: '/pages/login/login' }); } } }; ``` 这种方式适合于维护一致性的用户体验设计[^4]。 --- ### 注意事项 - 自定义导航栏可能会增加一定的开发成本和性能开销,请权衡利弊后再决定是否采用。 - 若选择隐藏原生导航栏,务必提供清晰易懂的操作指引以防用户迷失方向。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值