導(dǎo)航組件

2024-01-22 17:20 更新

導(dǎo)航組件,默認(rèn)提供點(diǎn)擊響應(yīng)處理,不需要開(kāi)發(fā)者自定義點(diǎn)擊事件邏輯。

說(shuō)明

該組件從API Version 9開(kāi)始支持。后續(xù)版本如有新增內(nèi)容,則采用上角標(biāo)單獨(dú)標(biāo)記該內(nèi)容的起始版本。

子組件

必須包含兩個(gè)子組件,其中第二個(gè)子組件必須為NavDestination。

說(shuō)明

子組件個(gè)數(shù)異常時(shí):

  1. 有且僅有1個(gè)時(shí),觸發(fā)路由到NavDestination的能力失效。
  2. 有且僅有1個(gè)時(shí),且使用NavDestination場(chǎng)景下,不進(jìn)行路由。
  3. 大于2個(gè)時(shí),后續(xù)的子組件不顯示。
  4. 第二個(gè)子組件不為NavDestination時(shí),觸發(fā)路由功能失效。

接口

NavRouter()

事件

名稱(chēng)

功能描述

onStateChange(callback: (isActivated: boolean) => void)

組件激活狀態(tài)切換時(shí)觸發(fā)該回調(diào)。返回值isActivated為true時(shí)表示激活,為false時(shí)表示未激活。

說(shuō)明:

開(kāi)發(fā)者點(diǎn)擊激活NavRouter,加載對(duì)應(yīng)的NavDestination子組件時(shí),回調(diào)onStateChange(true)。NavRouter對(duì)應(yīng)的NavDestination子組件不再顯示時(shí),回調(diào)onStateChange(false)。

示例

  1. // xxx.ets
  2. @Entry
  3. @Component
  4. struct NavRouterExample {
  5. @State isActiveWLAN: boolean = false
  6. @State isActiveBluetooth: boolean = false
  7. build() {
  8. Column() {
  9. Navigation() {
  10. NavRouter() {
  11. Row() {
  12. Row().width(30).height(30).borderRadius(30).margin({ left: 3, right: 10 }).backgroundColor(Color.Pink)
  13. Text(`WLAN`)
  14. .fontSize(22)
  15. .fontWeight(500)
  16. .textAlign(TextAlign.Center)
  17. }
  18. .width('90%')
  19. .height(72)
  20. NavDestination() {
  21. Flex({ direction: FlexDirection.Row }) {
  22. Text('未找到可用WLAN').fontSize(30).padding({ left: 15 })
  23. }
  24. }.hideTitleBar(false).backgroundColor('#0c182431')
  25. }.backgroundColor(this.isActiveWLAN ? '#ccc' : '#fff')
  26. .borderRadius(24)
  27. .onStateChange((isActivated: boolean) => {
  28. this.isActiveWLAN = isActivated
  29. })
  30. NavRouter() {
  31. Row() {
  32. Row().width(30).height(30).borderRadius(30).margin({ left: 3, right: 10 }).backgroundColor(Color.Pink)
  33. Text(`藍(lán)牙`)
  34. .fontSize(22)
  35. .fontWeight(500)
  36. .textAlign(TextAlign.Center)
  37. }
  38. .width('90%')
  39. .height(72)
  40. NavDestination() {
  41. Flex({ direction: FlexDirection.Row }) {
  42. Text('未找到可用藍(lán)牙').fontSize(30).padding({ left: 15 })
  43. }
  44. }.hideTitleBar(false).backgroundColor('#0c182431')
  45. }.backgroundColor(this.isActiveBluetooth ? '#ccc' : '#fff')
  46. .borderRadius(24)
  47. .onStateChange((isActivated: boolean) => {
  48. this.isActiveBluetooth = isActivated
  49. })
  50. }
  51. .title('設(shè)置')
  52. .titleMode(NavigationTitleMode.Free)
  53. .mode(NavigationMode.Auto)
  54. .hideTitleBar(false)
  55. .hideToolBar(true)
  56. }.height('100%')
  57. }
  58. }

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)