uniapp 一个页面跳到另一个页面onShow方法不执行呢
时间: 2023-08-25 10:04:48 浏览: 412
在 Uniapp 中,当从一个页面跳转到另一个页面时,通常情况下 onShow 方法会被执行。但是,如果你在跳转时使用了非正常方式,比如使用了 `uni.redirectTo` 或者 `uni.reLaunch` 方法,那么 onShow 方法可能不会被执行。
另外,如果你在跳转时使用了页面栈的功能,比如 `uni.navigateBack` 或者 `uni.switchTab`,那么跳转后的页面 onShow 方法也可能不会被执行。
如果你确定没有使用上述非正常跳转方式,而 onShow 方法仍然没有被执行,那么可能是因为页面已经被缓存,所以不会触发 onShow 方法。你可以尝试在跳转时使用 `uni.navigateTo` 方法,并在跳转前添加 `uni.$emit('pageRefresh')` 代码,然后在跳转后的页面中监听这个事件并在事件回调函数中执行需要执行的代码。这样可以保证页面跳转后 onShow 方法能够被正确执行。
相关问题
uniapp另一个页面跳到来刷新页面
在UniApp中,可以使用uni.navigateTo或uni.redirectTo方法来跳转到另一个页面,并使用页面间通信来实现刷新页面的效果。
首先,在当前页面中,可以通过uni.navigateTo或uni.redirectTo方法跳转到目标页面。例如,使用uni.navigateTo跳转到目标页面:
```javascript
uni.navigateTo({
url: '/pages/targetPage/targetPage'
});
```
接下来,在目标页面中,可以使用onShow生命周期函数来监听页面显示的时机,然后在该函数中执行刷新操作。例如,在目标页面的script标签中添加以下代码:
```javascript
export default {
onShow() {
// 执行刷新操作
this.refreshPage();
},
methods: {
refreshPage() {
// 执行刷新操作的代码
console.log('页面已刷新');
}
}
};
```
这样,当从当前页面跳转到目标页面时,目标页面会在显示时自动执行refreshPage方法进行刷新操作。
注意:如果使用uni.redirectTo方法跳转到目标页面,则当前页面会被销毁,而使用uni.navigateTo方法跳转到目标页面,则当前页面会被保留在栈中。根据具体需求选择适合的方法来跳转页面。
uniapp中从一个页面跳转到另一个页面指定的位置
要实现从一个页面跳转到另一个页面指定的位置,可以使用uniapp提供的页面传参功能和页面生命周期函数。
1. 在跳转前的页面,通过uni.navigateTo()方法跳转到目标页面,并将需要跳转到的位置作为参数传递给目标页面。例如:
```
uni.navigateTo({
url: '/pages/targetPage/targetPage?id=1&position=bottom',
})
```
2. 在目标页面的onLoad()生命周期函数中获取传递的参数,并根据参数设置需要跳转到的位置。例如:
```
onLoad: function (options) {
if (options.position === 'bottom') {
// 设置需要跳转到的位置为底部
this.setData({
scrollTop: 9999
})
}
}
```
在此示例中,目标页面的onLoad()生命周期函数通过判断传递的position参数是否为bottom,来设置需要跳转到的位置为页面底部。
3. 在目标页面的wxml文件中,通过scroll-view标签设置页面的滚动区域。例如:
```
<scroll-view scroll-y="true" style="height: 100vh;" scroll-top="{{scrollTop}}">
// 页面内容
</scroll-view>
```
在此示例中,通过设置scroll-view标签的scroll-top属性绑定目标页面的scrollTop变量,实现在页面跳转后自动滚动到指定位置。
需要注意的是,目标页面的onLoad()生命周期函数是在页面首次加载时执行的,如果需要在页面后续更新时也能自动跳转到指定位置,可以考虑在目标页面的onShow()生命周期函数中根据传递的参数更新页面的scrollTop变量。