ts-basic-components-navrouter.md 3.2 KB
Newer Older
L
luoying_ace_admin 已提交
1 2 3 4 5 6 7 8 9 10 11 12
# NavRouter

导航组件,默认提供点击响应处理,不需要开发者自定义点击事件逻辑。

> **说明:**
>
> 该组件从API Version 9开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。

## 子组件

必须包含两个子组件,其中第二个子组件必须为[NavDestination](ts-basic-components-navdestination.md)

Y
yamila 已提交
13 14 15 16 17 18 19 20
> **说明:**
>
> 子组件个数异常时:
> 1. 有且仅有1个时,触发路由到NavDestination的能力失效。
> 2. 有且仅有1个时,且使用NavDestination场景下,不进行路由。
> 3. 大于2个时,后续的子组件不显示。
> 4. 第二个子组件不为NavDestination时,触发路由功能失效。

L
luoying_ace_admin 已提交
21 22 23 24 25 26 27
## 接口

NavRouter()


## 事件

Y
yamila 已提交
28 29 30
| 名称                                                    | 功能描述                                                     |
| ------------------------------------------------------- | ------------------------------------------------------------ |
| onStateChange(callback: (isActivated: boolean) => void) | 组件激活状态切换时触发该回调。返回值isActivated为true时表示激活,为false时表示未激活。<br/> **说明:** <br/>开发者点击激活NavRouter,加载对应的NavDestination子组件时,回调onStateChange(true)。NavRouter对应的NavDestination子组件不再显示时,回调onStateChange(false)。 |
Y
yamila 已提交
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88

## 示例

```ts
// xxx.ets
@Entry
@Component
struct NavRouterExample {
  private arr: number[] = [0, 1, 2, 3]
  @State isActive: boolean = false
  @State dex: number = 0

  build() {
    Column() {
      Navigation() {
        List({ space: 12, initialIndex: 0 }) {
          ForEach(this.arr, (item: number, index: number) => {
            ListItem() {
              NavRouter() {
                Row() {
                  Image($r('app.media.icon')).width(30).height(30).borderRadius(30).margin({ left: 3, right: 10 })
                  Text(`NavRouter${item + 1}`)
                    .fontSize(22)
                    .fontWeight(500)
                    .textAlign(TextAlign.Center)
                }
                .width(180)
                .height(72)
                .backgroundColor(this.dex === index ? '#ccc' : '#fff')
                .borderRadius(24)

                NavDestination() {
                  Text(`我是NavDestination第${item + 1}页内容`).fontSize(50)
                  Flex({ direction: FlexDirection.Row }) {
                    Row() {
                      Image($r('app.media.icon')).width(40).height(40).borderRadius(40).margin({ right: 15 })
                      Text('今天共有七节课').fontSize(30)
                    }.padding({ left: 15 })
                  }
                }.backgroundColor('#ccc')
                .title(`NavDestination${item + 1}`)
              }.onStateChange((isActivated: boolean) => {
                this.dex = index
              })
            }
          }, item => item)
        }
        .height('100%')
        .margin({ top: 12, left: 12 })
      }
      .mode(NavigationMode.Split)
      .hideTitleBar(true)
      .hideToolBar(true)
    }.height('100%')
  }
}
```