如何在App内嵌vue中自定义返回

博客围绕业务场景,介绍App给H5自定义返回键能力的实现。需掌握window.history.length含义及更新时机,其值在push进入时更新。解决方案是在返回指定页的前一页push时记录状态值,在指定页判断并记录当前window.history.length,点击返回时执行相应操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 业务场景如下:

工作台页 ==> 列表页一(点击返回返回至上一页) ==> 详情页一 (点击返回返回至上一页) ==> 输入信息页一(点击返回返回至上一页) ==> 输入信息页二(点击返回返回至上一页) ==> 详情页一(此时点击返回返回至列表一,在列表页点击返回返回至工作台页。)

  • 前置条件

    • App需提供给H5自定义返回键的能力。
  • 需要掌握的知识点:

    • window.history.length含义是什么?

      • MDN释义:history.length只读属性返回一个整数,表示会话历史记录中的元素数,包括当前加载的页。例如,对于加载到新选项卡中的页面,此属性返回1。(可以简单理解为回退到第一个页面的次数减1)
    • window.history.length何时更新?

      • 当push进入的时候值会更新,例如:通过a链接、this.$router.push()等。
  • 解决方案

    • 第一步:在返回指定页的前一页(即上述业务场景的工作台页)在push进入下一页的时候,记录一个状态值:该值表示返回的指定页(即上述业务场景的列表页一)是通过push进入的,例如通过a链接、this.$router.push()等。
    • 第二步:在返回的指定页(即上述业务场景的列表页一)中判断如果是通过push进入的记录下来当前的sessionStorage.setItem('len', window.history.length)。点击返回的时候执行执行this.$router.go(sessionStorage.getItem('len') - window.history.length)即可。

转载于:https://juejin.im/post/5d0ae529e51d4510774a8879

### 如何在 Uni-app 中用 Vue 替换 Uni 组件和方法 #### 使用标准 Vue 组件替代 `uni` 组件 当开发者希望将特定的 `uni` 组件替换为纯 `Vue` 实现时,可以遵循以下策略: 对于想要移除对 `uni-icon` 的依赖并采用更通用的方式处理图标的情况,可以选择使用像 Element Plus 或者其他基于 Vue 的 UI 库中的图标组件。如果偏好不依赖额外库,则可以直接通过 `<svg>` 标签内嵌 SVG 图标来达到目的。 ```html <!-- 原始 uni-app icon --> <template> <view><uni-icons type="location" size="20"></uni-icons></view> </template> <!-- 转换成 vue svg inline 方法 --> <template> <view> <!-- Inline SVG Icon Example --> <svg xmlns="http://www.w3.org/2000/svg" viewBox="..." width="20" height="20"> ...path data... </svg> </view> </template> ``` #### 处理 API 和工具函数 针对那些由框架提供的辅助功能或服务端交互逻辑(比如网络请求),应当寻找合适的第三方库或是利用浏览器内置的能力来进行重写。例如,原本调用 `uni.request()` 发起 HTTP 请求的操作可以用 Axios 来代替;而诸如设备信息获取等功能则可能需要借助 Cordova 插件或者其他跨平台解决方案。 ```javascript // Original using uni.request() uni.request({ url: 'https://example.com/api', method: 'GET', success(res) { console.log('success', res); }, }); // Converted to use axios instead of uni.request() [^1] import axios from 'axios'; const response = await axios.get('https://example.com/api'); console.log(response.data); ``` #### 自定义事件绑定与生命周期钩子 由于不同版本之间可能存在差异,在迁移过程中还需要注意调整视图层上的事件监听器声明方式以及确保所有必要的生命周期回调都能正常触发。这通常涉及到更新模板语法以匹配目标环境的要求,并且适当修改 JavaScript 部分用来响应这些变化。 ```html <!-- Before with uni-app style event binding --> <button @click="handleClick">Click me!</button> <script> export default { methods: { handleClick(event) { alert(`Button clicked!`); } } } </script> <!-- After ensuring compatibility across platforms --> <button v-on:click.stop.prevent="handleClick">Click me too!</button> <script setup lang="ts"> function handleClick(event:Event){ alert(`Button also clicked!`) } </script> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值