HarmonyOS NavDestination和page使用区别

NavDestination和page在使用上,除了生命周期的回调还有什么区别?使用NavDestination在功能上和性能上会不会有问题?

HarmonyOS
2天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
shlp

当前HarmonyOS支持两套路由机制(Navigation和Router)。

1、NavDestination作为子页面的根容器,用于显示Navigation的内容区。NavDestination组件必须配合Navigation使用,作为Navigation目的页面的根节点。

2、使用@Entry修饰的页面,在跳转时会和Router搭配使用。

Router适用于模块间与模块内页面切换,通过每个页面的url实现模块间解耦。模块内页面跳转时,为了实现更好的转场动效场景不建议使用该模块,推荐使用Navigation。

Navigation作为后续长期演讲及推荐的路由选择方案,其与Router比较的优势如下:

易用性层面:

Navigation天然具备标题、内容、回退按钮的功能联动,开发者可以直接使用此能力。Router若要实现此能力,需要自行定义;

Navigation的页面是由组件构成,易于实现共享元素的转场。

功能层面:

Navigation天然支持一多,Router不支持;

Navigation没有路由数量限制,Router限制32个;

Navigation可以获取到路由栈NavPathStack,并对路由栈进行操作;

Navigation可以嵌套在模态对话框中,也就是说可以模态框中定义路由,Router不支持;

Navigation的组件全量由开发者自行控制,开发者可以自定义复杂的动效和属性的设置(背景、模糊等),Router的page对象不对外暴露,开发者无法对page进行处理。

性能层面

Navigation传递参数性能更优,Navigation通过引用传递,Router通过深拷贝完成;

Navigation可以配合动态加载,实现组件动态加载,Router页面使用@Entry进行修饰,当前模块加载时会生成全量页面。

推荐使用Navigation,navigation后续是会兼容router所有的能力而且比router的功能更强大,未来navigation是主流。

分享
微博
QQ
微信
回复
2天前
相关问题
HarmonyOS V2V1的使用区别?
266浏览 • 0回复 待解决
console.loghilog的区别,如何选择使用
2321浏览 • 1回复 待解决
HarmonyOS PanEventDragEvent的区别
38浏览 • 1回复 待解决
HarmonyOS 页面组件的区别
174浏览 • 1回复 待解决
HarmonyOS RecordHashMap的区别
57浏览 • 2回复 待解决
HarmonyOS Objectobject的区别
574浏览 • 1回复 待解决
wampserverapache的区别
2785浏览 • 1回复 待解决