原生鸿蒙路由总结

Navigation路由导航

使用Navigation代替所有的路由跳转

理念是:一整个应用都只有一个page,剩余其它的部分都是组件【华为推荐使用Navigation路由导航】

第一种路由方式

  • 根组件最外层必须被Navigation包裹
  • 要被跳转的组件必须被NavDestination包裹
  • 跳转对象是用NavPathStack对象
  • NavPathStack必须绑定给Navigation
  • 下层组件使用各种方式获取上层的NavPathStack进行跳转
  • 跳转维护由.navDestination实现
  • Navigation绑定NavPathStack,最好用Provide提供给子组件使用
  • 路由管理-给Navigation绑定.navDestination(builder)- builder不能写小括号模式
 import { Friend } from './Friend'
 import { Live } from './Live'
 import { Shake } from './Shake'
 ​
 @Entry
 @Component
 struct NavigationCase {
   @Provide
   stackPath: NavPathStack = new NavPathStack()
 ​
 ​
   @Builder
   getRouterBuilder (name: string) {
    // name是要跳转的标识
     if(name === 'friend') {
       Friend()
     }
     else if(name === "live") {
      Live()
     }
     else if(name === "shake") {
      Shake()
     }
   }
 ​
   build() {
     // 1. 使用Navigation包裹整个根组件
     Navigation(this.stackPath) {
        List() {
          ListItem(){
            Text("朋友圈")
              .fontSize(20)
              .width("100%")
          }
          .height(50)
          .width("100%")
          .padding({
            left: 20
          })
          .onClick(() => {
            this.stackPath.pushPath({
              name: 'friend'
            })
          })
 ​
          ListItem(){
            Text("直播")
              .fontSize(20)
              .width("100%")
          }
          .height(50)
          .width("100%")
          .padding({
            left: 20
          })
          .onClick(() => {
            this.stackPath.pushPath({
              name: 'live'
            })
          })
          ListItem(){
            Text("摇一摇")
              .fontSize(20)
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值