跳转至

navigateTo和redirectTo和uni.reLaunch区别

uniapp 官方文档

uni.navigateTouni.redirectTo 都是 Uniapp 中用来进行页面跳转的方法,它们的主要区别在于页面栈的管理和跳转后的行为:

1. uni.navigateTo

  • 功能:用于保留当前页面,跳转到应用内的某个页面。跳转后,新页面会被压入页面栈中,用户可以通过返回按钮返回到当前页面。
  • 适用场景:适用于跳转到子页面或详情页,并且希望用户能够通过返回按钮回到之前的页面。

使用示例

uni.navigateTo({
  url: '/pages/detail/detail'
});

页面栈管理: - 会将当前页面保留在栈中,跳转到新的页面,所以用户可以通过返回按钮返回到当前页面。


2. uni.redirectTo

  • 功能:用于关闭当前页面,跳转到应用内的某个页面。跳转后,当前页面会被销毁,新的页面会替代当前页面显示。
  • 适用场景:适用于不需要返回当前页面的场景,例如从登录页面跳转到首页,或者跳转时不希望保留当前页面。

使用示例

uni.redirectTo({
  url: '/pages/home/home'
});

页面栈管理: - 会关闭当前页面,跳转到目标页面。由于当前页面被销毁,无法返回到该页面。


主要区别总结:

特性 uni.navigateTo uni.redirectTo
页面栈行为 跳转后,当前页面会被保留,用户可以返回。 跳转后,当前页面会被销毁,不能返回。
跳转场景 适用于需要返回的情况,如详情页等。 适用于不需要返回的情况,如登录后跳转首页。
限制 一次最多跳转 10 层,超出会报错。 一次最多跳转 10 层,超出会报错。

使用建议:

  • 如果希望用户可以通过返回按钮回到当前页面,使用 uni.navigateTo
  • 如果希望跳转后用户无法返回当前页面,使用 uni.redirectTo

uni.reLaunch

uni.reLaunch 是 Uniapp 提供的页面跳转方法,用于 关闭所有页面并打开一个新页面,即重新启动一个新的页面栈。

uni.reLaunch 的特点

  • 关闭所有页面:调用 uni.reLaunch 后,当前页面栈中的所有页面都会被销毁,新的页面会成为唯一的页面,用户无法返回到之前的页面。
  • 适用场景:通常用于用户完成某个操作后(如登录、注销、清除数据等),需要跳转到一个新的页面并且不希望用户返回之前的页面。

使用场景

  • 登录后跳转到首页:用户登录成功后,关闭所有页面并跳转到首页。
  • 注销或退出登录:当用户退出登录时,关闭所有页面并跳转到登录页面。

示例代码

uni.reLaunch({
  url: '/pages/home/home'  // 目标页面路径
});

与其他跳转方法的对比

特性 uni.navigateTo uni.redirectTo uni.reLaunch
页面栈行为 保留当前页面,跳转到新页面,用户可以返回。 关闭当前页面,跳转到新页面,用户不能返回。 关闭所有页面,跳转到新页面,用户不能返回。
适用场景 子页面或详情页,用户可以返回的场景。 跳转到不需要返回的页面,如从登录跳转到首页。 需要清空所有页面并跳转到新页面,如注销后跳转。
跳转后用户行为 可以通过返回按钮返回之前的页面。 不能返回,跳转后当前页面会被销毁。 不能返回,所有页面都会被销毁。

使用建议

  • 如果需要让用户可以返回上一页,使用 uni.navigateTo
  • 如果跳转后不需要用户返回上一页,使用 uni.redirectTo
  • 如果需要清除页面栈,并跳转到一个新页面,使用 uni.reLaunch

uni.reLaunch 是清除页面栈的最强跳转方式,通常在需要“重置”整个应用流程时使用。

评论