【鸿蒙开发】页面跳转传值(回传)

1、router 方式

包含头文件:

import router from ‘@ohos.router’

第一个页面向第二个页面传值:

Button('点击跳转')

        .onClick(()=>{

            router.pushUrl({

                url: 'pages/SecondPage',

                params:{

                    sendMsg:'这里是数据'

        }

    })

})

第二个页面获取数据:

包含头文件:

import router from ‘@ohos.router’

@state   message:string = (router.getParams() as  Record<string, string>)['sendMsg']


第二个页面返回:

Button('返回')

        .onClick(()=>{

            router.showAlertBeforeBackPage({message:'你确认要返回吗?'})//这里可以添加一个返回提升弹窗

             router.back({ //返回上一个页面

                url: 'page/FirstPage'

                params:{

                 backMsg:'返回的数据'   

        }

        }) 

})

第一个页面获取返回的数据:

@state 

message:string = '';

onPageShow(){

//当页面显示的时候

let record = router.getParams() as Record <string, string>

    if(record){

        this.message  = record['backMsg']

}

}

2.emitter 方式

引入emitter

import emitter from '@ohos.events.emitter'

发送:

发送一个多参数的对象

item 为要发送的对象

InnerEvent 发送的事件

EventData 事件携带的数据

let eventData = {

          data: item};

        let innerEvent = {

          eventId: 1,

          priority: emitter.EventPriority.HIGH

        };

        emitter.emit(innerEvent, eventData);

订阅

定义一个 stringName

@State stringName:string=“测试”

TestInfo:发送方法中item 对应的实体

emitter.once(innerEvent, (eventData) => {

        const data=JSON.stringify(eventData.data)//拿到返回obj对象

        let json:TestInfo=JSON.parse(data);//转换为实体

        this.stringName =json.name//赋值

      });

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容