Harmony OS Next ----页面跳转
开发者也可以根据自己的需求,去定义弹窗。
一、页面路由
页面路由指在应用程序中实现不同页面之间的跳转和数据传递。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+
更多推荐


所有评论(0)