一、页面路由

  页面路由指在应用程序中实现不同页面之间的跳转和数据传递。Harmony OS提供了Router模块,通过不同的url地址,可以方便地进行发页面路由,轻松实现访问不同的页面

二、页面跳转的两种方式

1.跳转的两种方式:router.pushUrl() 和 router.replaceUrl()

2.router.pushUrl():目标页不会替换当前页,而是进入页面栈。这样可以保留当前页的状态,并且可以通过返回键或者调用router.back()方法回到当前页。

方法 说明

pushUrl(options:RouterOptions):Promise<void>

返回一个promise对象,说明方法本身是异步方法

pushUrl(options:RouterOptions,callback:

AsynCallback<void>:void

无返回,可以在异步回调中得到结果

3.router.replaceUrl():目标页会替换当前页,并销毁当前页,这样可以释放当前页的资源,并且无法返回到当前页

方法 说明

replaceUrl(options:RouterOptions):Promise<void>

返回一个promise对象,说明方法本身是异步方法

ReplaceUrl(options:RouterOptions,callback:

AsynCallback<void>:void

无返回,可以在异步回调中得到结果

注意:

     页面栈的最大容量为32个页面。如果超过这个限制,可以调用router.clear()方法清空历史页面栈。释放内存空间。

三、页面创建模式

       在跳转到新的页面的时候,需要创建页面,这是时候Router模块提供了两种创建页面的模式,分别是Standar和Single。

  1.Standard:标准实例模式,也是默认情况下的实例模式。每次调用该方法都会新建一个目标页,并压入栈顶。

  2.Single:单实例模式,即如果目标页的url在页面栈中已经存在同url页面,则离栈顶最近的同url会被移动到栈顶,并重新加载;如果目标也的url中不存在同url页面,则按找标准模式跳转

四、页面跳转场景

   场景1:

 有一个主页(Home) 和一个详情页(Detail) ,希望从主页点击一个商品,跳转到详情页,同时,需要保留主页在页面栈中,一边返回时会恢复状态。

     场景2:

   有一个登录页(Login) 和一个个人中心页(Profile).希望从登录页成功登录后,跳转到个人中中心页。同时,销毁登录页,在返回时直接退出应用。

     场景3:

   有一个设置页(Setting) 和一个主题切换页 (Theme) ,希望从设置页点击主题选项,跳到主题切换页。同时,需要保证每次只有一个主题切换存在于页面栈,在返回式直接回到设置页。

场景4:

  有一个搜索结果列表页(SearchResult) 和一个搜索结果详情页(SearchDetail),希望从搜索结果列表页点击某一项结果,跳转到搜索结果详情页。同时,如果该结果已经被查看过,则不需要再新建一个详情页,而是直接跳转到已经存在的详情页。

携带数据

     如果需要在跳转的时候传递一些数据给目标也,则可以在调用Router模块的方法时,添加一个params属性,并指定一个对象作为参数。

发送数据

获取数据

五、页面返回

1.页面返回方式

(1)返回上一页

(2)页面返回指定页

页面返回携带数据

返回数据

接受数据

六、页面返回前的弹窗确认

   在开发应用时,为了避免用户误操作或者丢失数据,有时候需要在用户从一个页面返回到另一个页面之前,弹出一个询问框,让用户确认是否要执行这一个操作。

  

1.默认弹窗

Router模块有提供一种默认的弹窗方式,即router.showAlertBeforeBackPage()。

2.自定义弹窗

 开发者也可以根据自己的需求,去定义弹窗

注:适用版本Harmony OS NEXT/5.0/API12+

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐