十二、路由参数和应用数据共享

发布时间 2023-12-18 09:38:06作者: 创客未来

数据传递

页面跳转,使用路由传递。

// page1跳转传递参数

  router.pushUrl({
                url:'pages/ParamRouter2',
                params:{
                  name:'HarmonyOS4.0',
                  age:20
                }
              })

//page2接收参数

let param_name = router.getParams()['name'] as string

 

应用间数据共享

//应用下数据共享
AppStorage.SetOrCreate('appName','诗词学习')
//应用下某人需要用的的页面获取数据
let appName = AppStorage.Get('appName') as string

 

案例代码:

import router from '@ohos.router'
@Entry
@Component
struct ParamRouter1 {
  @State message: string = '传递参数1'

  build() {
    Row() {
      Column() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold).onClick(() => {
              router.pushUrl({
                url:'pages/ParamRouter2',
                params:{
                  name:'HarmonyOS4.0',
                  age:20
                }
              })
          //应用下数据共享
          AppStorage.SetOrCreate('appName','诗词学习')

        })
      }
      .width('100%')
    }
    .height('100%')
  }
}
import router from '@ohos.router'
//获取传递过来的参数
let param_name = router.getParams()['name'] as string
//应用下某人需要用的的页面获取数据
let appName = AppStorage.Get('appName') as string
@Entry
@Component
struct ParamRouter2 {
  @State message: string = 'Hello World'

  build() {
    Row() {
      Column() {
        Text(param_name)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
        Divider()
        Text(appName)
      }
      .width('100%')
    }
    .height('100%')
  }
}

以下两种写法是一样的:

let appName = AppStorage.Get('appName') as string
let appName1:string = AppStorage.Get('appName')