HarmonyOS鸿蒙Next中使用Navigation跳转到组件时如何传递@ObjectLink修饰的参数
HarmonyOS鸿蒙Next中使用Navigation跳转到组件时如何传递@ObjectLink修饰的参数
@Builder Detail(name: string) { if (name === ‘Detail’) { WereWolfDetail({ gameRound: this.gameRound }); } }
//父页面 @Entry @Component struct Main { @Provide pageStack: NavPathStack = new NavPathStack(); @State gameRound: GameRound | undefined = undefined; build() { Navigation(this.pageStack) { Button(“进入游戏”) .onClick(() => { this.gameRound = new GameRound(this.currentRolesSet); this.pageStack.pushPath({ name: ‘Detail’ }); }) .width(“100%”) .height(65) .type(ButtonType.Normal) .borderRadius(10) .backgroundColor(’#5A87C7’) .enabled(this.currentRolesSet[RoleName.SomeOne] > 5 ? true : false) } .hideTitleBar(true) .navDestination(this.Detail) } }
//子组件 @Builder export function DetailBuilder() { Detail() }
@Component export struct Detail { @Consume pageStack: NavPathStack; build() { NavDestination() { //… } .hideTitleBar(true) }
编译时报错:
hvigor ERROR: Failed :entry:default@CompileArkTS… hvigor ERROR: ArkTS Compiler Error 1 ERROR: ArkTS:ERROR File: D:/ProgramProject/GG/entry/src/main/ets/view/wereWofDetailView.ets:6:3 Property ‘gameRound’ in the custom component ‘wereWolfDetailView’ is missing (mandatory to specify). COMPILE RESULT:FAIL {ERROR:2} hvigor ERROR: BUILD FAILED in 774 ms
更多关于HarmonyOS鸿蒙Next中使用Navigation跳转到组件时如何传递@ObjectLink修饰的参数的实战教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中使用Navigation跳转到组件时传递@ObjectLink修饰的参数,可以通过以下步骤实现:
-
定义@ObjectLink修饰的参数:在源组件中定义一个@ObjectLink修饰的参数,这个参数通常是一个对象或数组,用于绑定到目标组件的数据。
-
使用Navigation进行跳转:在源组件中调用
router.push方法进行页面跳转时,通过params参数将@ObjectLink修饰的参数传递给目标组件。 -
在目标组件中接收参数:在目标组件的
aboutToAppear生命周期方法中,通过router.getParams方法获取传递过来的参数,并将其赋值给目标组件中相应的@ObjectLink修饰的变量。
示例代码如下:
// 源组件
@Entry
@Component
struct SourcePage {
[@ObjectLink](/user/ObjectLink) data: MyData;
build() {
Column() {
Button('Jump to Target Page')
.onClick(() => {
router.push({
url: 'pages/TargetPage',
params: { data: this.data }
});
});
}
}
}
// 目标组件
@Entry
@Component
struct TargetPage {
[@ObjectLink](/user/ObjectLink) data: MyData;
aboutToAppear() {
const params = router.getParams();
this.data = params['data'];
}
build() {
Column() {
Text(this.data.message);
}
}
}
// 数据类
class MyData {
message: string = 'Hello, HarmonyOS!';
}
在这个示例中,SourcePage组件中的data参数通过router.push方法传递给TargetPage组件,并在TargetPage组件的aboutToAppear方法中接收并绑定到data变量上。
更多关于HarmonyOS鸿蒙Next中使用Navigation跳转到组件时如何传递@ObjectLink修饰的参数的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中,使用Navigation跳转到组件时,可以通过params参数传递数据。对于@ObjectLink修饰的参数,建议将其包装在一个对象中,然后通过params传递该对象。例如:
// 定义数据对象
class MyData {
@ObjectLink value: string;
}
// 跳转时传递参数
const myData = new MyData();
myData.value = "Hello";
router.pushUrl({
url: 'pages/MyPage',
params: { data: myData }
});
// 目标页面接收参数
@Entry
@Component
struct MyPage {
@State data: MyData = new MyData();
onPageShow() {
const params = router.getParams();
if (params && params.data) {
this.data = params.data;
}
}
}
这种方式确保@ObjectLink修饰的参数在跳转后仍然保持响应式。

