HarmonyOS 鸿蒙Next 通过router.pushurl进行画面间跳转时使用params进行参数传递,在目标画面修改后的参数怎么返回到原画面?
HarmonyOS 鸿蒙Next 通过router.pushurl进行画面间跳转时使用params进行参数传递,在目标画面修改后的参数怎么返回到原画面? 通过router.pushurl进行画面间跳转时使用params进行参数传递,在目标画面修改后的参数怎么返回到原画面?
-
使用router.back返回携带参数: https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V13/js-apis-router-V13#routerback12
-
使用router.getparams来获取参数: https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V13/js-apis-router-V13#routergetparams
-
在onPageShow中添加判断逻辑,并使用一个全局变量来对拉起页面的原因进行判断;比如a中定义一个appstorage全局变量ispush=false,当push到b页面时将ispush变更为true,onpageshow进入时如果判断ispush为true则触发getParams,并在onbackground中修改ispush=false(应用退回后台),这样只有从其他页面跳转来的时候才会触发getParams
-
推荐使用navigation中的getParamByName
更多关于HarmonyOS 鸿蒙Next 通过router.pushurl进行画面间跳转时使用params进行参数传递,在目标画面修改后的参数怎么返回到原画面?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
可以用广播
有没有demo 参考一下,
A页面:
import { emitter } from '@kit.BasicServicesKit';
// 定义一个eventId为1的事件
jump: emitter.InnerEvent = {
eventId: 1
};
aboutToAppear() {
// 订阅eventId为1的事件,收到eventId为1的事件后回调
emitter.on(this.jump, eventData => {
if (eventData.data) {
// 要执行的操作 (收到修改后返回来的参数要做的操作)
}
});
}
// A页面调用B页面时将this.jump传递过去
B页面:(目标页面)
import { emitter } from '@kit.BasicServicesKit';
@Prop jump: emitter.InnerEvent
// (修改完参数后)
let eventData: emitter.EventData = {
data: {
'a': a, // 你要传递回A页面的参数
'b': b,
}
};
// 发送eventId为1的事件,事件内容为eventData
emitter.emit(jump, eventData);
啊忘记写取消广播了,
在HarmonyOS鸿蒙Next系统中,当使用router.pushUrl
进行画面间跳转并通过params
传递参数时,若需要在目标画面修改参数并返回给原画面,可以通过以下方式实现:
-
使用返回结果机制:在目标画面中,修改参数后,可以通过
this.$router.back({result: modifiedParams})
的方式返回结果。这里的modifiedParams
是修改后的参数对象。 -
原画面接收返回结果:在原画面中,启动跳转时可以监听返回结果。例如,使用
this.$router.pushUrl('/targetPage', {params}, {success: (data) => { if (data.result) { // 处理返回的参数 } }})
。这里的data.result
即为目标画面返回的参数。 -
确保路由配置正确:确保在路由配置中,目标页面允许返回结果,并且原页面能够正确接收和处理这些结果。
注意,具体实现可能因项目结构和路由配置的不同而有所差异。在实际开发中,需根据项目的具体情况进行调整。
如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html