HarmonyOS鸿蒙Next中router路由跳转传值问题

HarmonyOS鸿蒙Next中router路由跳转传值问题

// 页面1 传递数据 router.pushUrl({ url:‘xxxxxx’, params:{ ‘originalValue’:result }})

// 页面2 接收数据 Text(this.message).onClick(()=>{ this.message = router.getParams()[originalValue] })

router.getParams()[originalValue]

这里提示错误 Indexed access is not supported for fields (arkts-no-props-by-index) 但是在断点模式下 Alt + F8 运行是可以获取到参数信息的,这个因该怎么写?


更多关于HarmonyOS鸿蒙Next中router路由跳转传值问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html

7 回复
  1. 如果前一个页面是:
router.pushUrl({ url: 'xxxxxx', params: result })

后一个页面可以:

let res = router.getParams();
let num: number = Number.parseInt(res.toString());
let str: string = res.toString();
let obj: XXObj = res as XXObj;
  1. 如果前一个页面是:
router.pushUrl({ url: 'xxxxxx', params: { 'originalValue': result }})

需要修改为:

router.pushUrl({
  url: "pages/crop",
  params: new PageInfo(0)
})

// 重点在于创建一个类型,包含你的key:

class PageInfo{
  constructor(val: number) {
    this.originalValue = val;
  }
  originalValue: number = 0;
}

后一个页面接收可以:

let pageInfo: PageInfo = router.getParams() as PageInfo;
let val = pageInfo.originalValue;

// 记得采纳一下回答。

更多关于HarmonyOS鸿蒙Next中router路由跳转传值问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


你好。

router.getParams() 得到的是一个object对象。在TypeScript或者JavaScript中,当然可以使用中括号属性名的形式获取对象的属性值。但是ArkTS与它们语法有差异。不能使用这样的方式获取。

要使用以下的方式获取,根据你的目标类型:

let res = router.getParams();
let num: number = Number.parseInt(res.toString());
let str: string = res.toString();
let obj: XXObj = res as XXObj;

详情的ArkTS语法,参见: 初识ArkTS语言-学习ArkTS语言-基础入门 - 华为HarmonyOS开发者


按照你的方法我进行了测试并不能获取到 Params 里的参数,而且我页面1 中 指定了key
按照你的方式我没有办法在获取的时候指定key,所以你这种方案应该是有前提的,方便告知前提是什么么?

标题

这里是段落文本。

子标题

这是另一个段落。

router.getParams()[originalValue]不能这样取值router.getParams(originalValue)as 类型 得到的结果在取值

getParams()

Obtains information about the current page params.

  • Returns: { Object } Page params.
  • Capabilities: SystemCapability.ArkUI.ArkUI.Full
  • Cross-platform:
  • Atomic Service:
  • Since: 11

在HarmonyOS鸿蒙Next中,使用router进行页面跳转时,可以通过params传递参数。例如:

import router from '@ohos.router';

router.push({
  url: 'pages/NextPage',
  params: {
    key1: 'value1',
    key2: 'value2'
  }
});

在目标页面中,可以通过router.getParams()获取传递的参数:

import router from '@ohos.router';

let params = router.getParams();
console.log(params.key1); // 输出: value1
console.log(params.key2); // 输出: value2

确保参数类型为stringnumber,复杂对象需序列化。

回到顶部