uniapp组件里的onLoad和onShow里的方法不执行

本文介绍了uniapp中使用uni-simple-router进行路由守卫的场景,详细讲解了通过params和query两种方法获取页面参数的差异。params传递的参数在url中不显示,而query传递的参数会显示在地址栏。在目标页面,应分别通过this.$route.params和this.$route.query来获取相应参数。

uniapp中的路由守卫(uni-simple-router

获取参数的两种常用方法:params和query

1、由于动态路由也是传递params的,所以 this.$router.push() 方法中path不能和params一起使用,否则params将无效。需要用name来指定页面。及通过配置路由的name属性访问
举例
举例

this.$router.push({name:"menuLink",params:{alert:"页面跳转成功"}})

2、在目标页面通过 this.$route.params 获取参数

<p>提示:{{this.$route.params.alert}}</p>

3、在目标页通过 this.$route.query 获取参数

//传值
this.$router.push({path:"/menLink",query:{alert:"页面跳转成功"}})

//用query获取值
<p>提示:{{this.$route.query.alert}}</p>

注:两种方式的区别是query传参的参数会带在url后边展示在地址栏,params传参的参数不会展示到地址栏。需要注意的是接收参数的时候是route而不是router。两种方式一一对应,名字不能混用

<think>我们正在讨论UniApp中的onShow生命周期函数。根据用户的问题,他想了解在onShow生命周期中两个方法执行顺序。但请注意,onShow本身是一个生命周期钩子,通常我们讨论的是同生命周期钩子之间的顺序,而是在同一个钩子内多个方法的顺序(因为同一个钩子内的多个方法按代码顺序执行)。过,用户可能指的是在onShow生命周期中,它与其他生命周期(如onLoad,onReady等)的执行顺序。根据提供的引用,我们可以整理出UniApp页面生命周期函数的执行顺序:1.beforeCreate2.onLoad3.onShow4.created5.beforeMount6.onReady7.mounted当页面刷新数据时,还会触发更新相关的生命周期:-beforeUpdate-updated另外,引用[2]特别说明了onShow:它在页面展示时触发,当页面从后台切换到前台时也会触发。因此,onShow可能会多次执行。在同一个生命周期钩子内,如果我们定义了多个函数,那么它们的执行顺序取决于它们在代码中出现的顺序。但是,通常情况下,一个生命周期钩子(如onShow)我们只会定义一个函数,然后在这个函数内按顺序编写代码。如果用户指的是在onShow中调用了两个自定义方法,那么这两个方法执行顺序就是它们在onShow函数中调用的顺序。例如:```javascriptonShow(){this.methodA();this.methodB();}```那么methodA先执行,methodB后执行。但是,如果用户问的是onShow与其他生命周期函数的执行顺序,那么根据引用[1][3],顺序是:onLoad->onShow->...因此,我们需要明确用户的问题。由于用户的问题描述是“在UniApponShow生命周期中,两个方法执行顺序问题”,这可以理解为同一个onShow钩子中两个自定义方法执行顺序。所以,回答应该是:在同一个onShow生命周期函数中,方法执行顺序按照代码的书写顺序执行。同时,我们也可以补充整个生命周期的顺序,以便用户全面了解。另外,根据系统指令,我们需要生成相关问题。根据以上分析,回答如下:</think>在 UniApp 页面生命周期中,`onShow` 的执行顺序特性如下: ### 执行顺序解析 1. **整体生命周期顺序**(首次加载): ```text beforeCreate → onLoadonShow → created → beforeMount → onReady → mounted ``` 当页面首次加载时,`onShow` 在 `onLoad` 之后、`created` 之前执行[^1][^3]。 2. **`onShow` 的重复触发特性**: - 当页面从**后台切换回前台**(如从其他页面返回、APP从后台唤醒)时,`onShow` 会再次触发[^2] - 此时**会重新执行** `onLoad/onReady` 等初始化钩子 - 典型场景:用户从子页面返回列表页时,可在 `onShow` 中刷新数据 3. **`onShow` 内部方法顺序**: ```javascript onShow() { this.methodA(); // 先执行 this.methodB(); // 后执行 } ``` 同一个 `onShow` 钩子内的**方法按代码顺序同步执行**,无异步延迟。 ### 关键区别 | 生命周期 | 触发时机 | 执行次数 | |----------|--------------------------|----------| | `onLoad` | 页面**首次创建**时 | 仅1次 | | `onShow` | 页面**显示时**(含切回) | 多次 | ### 典型使用场景 ```javascript onShow() { // 1. 页面切回时刷新数据(如购物车更新) this.loadCartData() // 2. 更新实时状态(如在线状态检测) this.checkConnectionStatus() } ``` > ⚠️ 注意:在 `onShow` 中访问组件实例 (`this`) 是安全的,因为此时 `beforeCreate`/`onLoad` 已完成初始化[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值