页面之间传值

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)

  }

}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容