1.路由跳转传参
https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-router#routerpushurldeprecated
2.Emitter(发布订阅能力)的简单使用
参考官网链接:https://developer.huawei.com/consumer/cn/blog/topic/03189082514815017
3//demo
//1.新建页面:PageA
import { router } from '@kit.ArkUI'
import { Logger2 } from 'basic'
import { RouterParams } from '../../ViewModel/RouterParams'
import { emitter } from '@kit.BasicServicesKit'
/**
* 页面与页面之间跳转*/
@Entry
@ComponentV2
struct PageA {
inEmit() {
let eventData: emitter.EventData = {
data: {
"content": "param",
"id": 1,
}
};
let emitter_event: emitter.InnerEvent = {
eventId: 1,
priority: emitter.EventPriority.HIGH
};
emitter.emit(emitter_event, eventData);
// 或者不携带参数
// emitter.emit(emitter_event);
}
build() {
Column() {
Text('我是A页面')
Button("路由跳转1").onClick(() => {
router.pushUrl({
url: "pages/routerPage/PageB",
params: new RouterParams('我是A', [1, 2, 3])
}, router.RouterMode.Standard, (err) => {
if (!err) {
// B页面返回时触发此回调
Logger2.info(JSON.stringify(router.getParams()))
// console.log('Received data from B:', router.getParams());
}
})
this.inEmit()
})
Button('2.emitter传值').onClick(() => {
})
}
.height('100%')
.width('100%')
.padding(60)
}
}
//2.新建页面:PageB
import { router } from '@kit.ArkUI';
import { Logger2 } from 'basic';
import { RouterParams } from '../../ViewModel/RouterParams';
import { emitter } from '@kit.BasicServicesKit';
@Entry
@ComponentV2
struct PageB {
aboutToAppear(): void {
let string = router.getParams()
// Logger2.info(JSON.stringify(string))
}
onEmitter() {
let emitter_event: emitter.InnerEvent = {
eventId: 1
};
let callback: Callback<emitter.EventData> = (eventData: emitter.EventData) => {
Logger2.info(`from emitter event by event id: ${JSON.stringify(eventData)}`);
}
// 收到eventId为1的事件后执行回调函数
emitter.on(emitter_event, callback);
}
onPageShow(): void {
this.onEmitter()
}
build() {
Column() {
Text('我是B页面')
Button('我提交').onClick(() => {
router.back({ url: 'pages/routerPage/PageA', params: new RouterParams('我是B', [4, 6]) });
})
}
.height('100%')
.width('100%')
.padding(60)
}
}