HarmonyOS router路由跳转问题

A--->B--->C --->A,并清空路由栈中的B和C。

HarmonyOS
2024-09-27 11:46:30
浏览
收藏 0
回答 2
待解决
回答 2
按赞同
/
按时间
鱼弦CTO
1

在 HarmonyOS 中,想要实现从页面 A 跳转到 B,再跳转到 C,然后再返回到 A,并清空路由栈中的 B 和 C,可以使用 ​​router.replace​​ 方法。这种方式可以确保在跳转到目标页面时,将当前页面从路由栈中移除。

以下是一个完整的示例代码,实现从页面 A 跳转到 B,再跳转到 C,然后从 C 返回 A 并清空中间的路由记录。

### 示例代码

#### 首页 (A)

// PageA.hml
<template>
  <div class="container">
    <button @click="navigateToB">Go to Page B</button>
  </div>
</template>

<script>
export default {
  methods: {
    navigateToB() {
      router.push({
        uri: 'pages/PageB/PageB'
      });
    }
  }
}
</script>

<style>
.container {
  flex-direction: column;
  justify-content: center;
  align-items: center;
  height: 100%;
}

button {
  font-size: 16px;
  color: #ffffff;
  background-color: #007dff;
  padding: 10px 20px;
  border-radius: 5px;
}
</style>

#### 第二页 (B)

// PageB.hml
<template>
  <div class="container">
    <button @click="navigateToC">Go to Page C</button>
  </div>
</template>

<script>
export default {
  methods: {
    navigateToC() {
      router.push({
        uri: 'pages/PageC/PageC'
      });
    }
  }
}
</script>

<style>
.container {
  flex-direction: column;
  justify-content: center;
  align-items: center;
  height: 100%;
}

button {
  font-size: 16px;
  color: #ffffff;
  background-color: #007dff;
  padding: 10px 20px;
  border-radius: 5px;
}
</style>

#### 第三页 (C)

// PageC.hml
<template>
  <div class="container">
    <button @click="navigateToA">Go back to Page A</button>
  </div>
</template>

<script>
export default {
  methods: {
    navigateToA() {
      // 使用 replace 方法返回到 PageA 并清除 B 和 C
      router.replace({
        uri: 'pages/PageA/PageA',
        clear: 1 // 清除所有之前的页面
      });
    }
  }
}
</script>

<style>
.container {
  flex-direction: column;
  justify-content: center;
  align-items: center;
  height: 100%;
}

button {
  font-size: 16px;
  color: #ffffff;
  background-color: #007dff;
  padding: 10px 20px;
  border-radius: 5px;
}
</style>

### 解释

  1. 页面 A:包含一个按钮,点击后跳转到页面 B。
  2. 页面 B:包含一个按钮,点击后跳转到页面 C。
  3. 页面 C
  • 包含一个按钮,点击后调用​​navigateToA​​ 方法。
  • 在​​navigateToA​​ 方法中使用了​​router.replace​​ 方法:
  • ​router.replace​​:用于替换当前页面为指定页面,并且可以设置​​clear​​ 属性,以清除堆栈中的历史记录。
  • ​clear: 1​​:表示清除所有之前的页面,只保留新页面。

通过上述方法,你可以在 HarmonyOS 中实现从页面 C 返回到页面 A,并清除中间的 B 和 C 的路由记录。这样可以确保用户返回到页面 A 时,B 和 C 不再存在于路由栈中。如果有任何进一步的问题或特殊需求,请随时提问。

分享
微博
QQ
微信
回复
2024-09-28 16:12:53
superinsect

router目前没有移除指定页面的接口。

1.可以使用router.back返回指定页面,返回指定页面时,当前页面(包括)到指定页面(不包括)之间的页面都会被销毁。

2.可以使用router.replaceUrl()方法,使得目标页去替换当前页,并销毁当前页,到最后一步会清空B和C。

分享
微博
QQ
微信
回复
2024-09-27 17:16:02
相关问题
router 路由跳转相关问题
201浏览 • 1回复 待解决
如何实现router命名路由跳转
939浏览 • 1回复 待解决
HarmonyOS router路由路径的问题
401浏览 • 1回复 待解决
HarmonyOS router跳转问题
398浏览 • 2回复 待解决
HarmonyOS 路由跳转回调问题
240浏览 • 1回复 待解决
HarmonyOS 路由跳转bea1的问题
277浏览 • 1回复 待解决
支付后的路由跳转问题
130浏览 • 1回复 待解决
HarmonyOS 路由跳转咨询
252浏览 • 1回复 待解决
router路由中的params对象
222浏览 • 1回复 待解决
HarmonyOS router无法跳转,并报错。
421浏览 • 1回复 待解决
HarmonyOS 跳转方式Router和Navigator
208浏览 • 1回复 待解决
HarmonyOS HAR包之间的路由跳转
505浏览 • 1回复 待解决
跨模块路由跳转问题有知道的吗?
1798浏览 • 1回复 待解决
HarmonyOS 请提供个路由跳转Demo
306浏览 • 1回复 待解决
HarmonyOS 怎么跨模块路由跳转界面
703浏览 • 1回复 待解决
HarmonyOS router.pushUrl跳转报100002
424浏览 • 1回复 待解决
HarmonyOS router 返回问题
177浏览 • 1回复 待解决
HSP的命名路由跳转疑问
162浏览 • 1回复 待解决