纯血鸿蒙APP实战开发——Navigation页面跳转对象传递案例

news2024/11/15 7:46:16

介绍

本示例主要介绍在使用Navigation实现页面跳转时,如何在跳转页面得到转入页面传的类对象的方法。实现过程中使用了第三方插件class-transformer,传递对象经过该插件的plainToClass方法转换后可以直接调用对象的方法,

效果图预览

使用说明

  1. 从首页进入本页面时,会传递一个类对象UserBookingInfo。点击“换个座位”按钮会调用该类对象的generateRandSeatNo()方法,该方法随机生成一个座位号。

实现思路

  1. 在oh-package.json5中添加第三方插件class-transformer的依赖

    "dependencies": {
        "class-transformer": "^0.5.1"
    }
    
  2. 在使用第三方插件class-transformer的页面导入class-transformer库。

    import { plainToClass } from "class-transformer";
    
  3. 定义要传递的类

    // 定义一个用户类
    export class UserBookingInfo {
      userName: string = '张山'; // 姓名
      userID: string = '332045199008120045'; // 证件号
      date: string = '1月1日' // 日期
      seatNo: number = 0; // 座位号
      price: number = 200; // 价格
      constructor(name: string, id: string, date: string) {
        this.userName = name;
        this.userID = id;
        this.date = date;
      }
    
      // 获取随机座位号
      generateRandSeatNo(): number {
        this.seatNo = Math.floor(Math.random() * (200 - 1) + 1);  // 获取200以内随机号
        return this.seatNo;
      }
    }
    
  4. 将传递过来的参数通过class-transformer的plainToClass方法转化为类对象。

    let bookingString:string = this.pageStack.getParamByName('NavigationParameterTransfer')[0] as string;
    // 转化成普通对象
    let userBookingTmp: UserBookingInfo = JSON.parse(bookingString);
    // TODO:知识点:通过调用第三方插件class-transformer的plainToClass方法转换成类对象, 不进行转换直接使用userBookingTmp调用getUserInfo方法会造成crash
    this.userBooking = plainToClass(UserBookingInfo, userBookingTmp);
    

高性能知识点

不涉及

工程结构&模块类型

navigationparametertransfer                        // har类型
|---src\main\ets\components
|   |---UserBookingInfo.ets                        // 要传递的类对象
|---src\main\ets\view
|   |---NavigationParameterTransferView.ets        // 视图层-Navigation主页面

模块依赖

  1. 本实例依赖class-transformer三方库。

参考资料

class-transformer三方库

鸿蒙全栈开发全新学习指南

也为了积极培养鸿蒙生态人才,让大家都能学习到鸿蒙开发最新的技术,针对一些在职人员、0基础小白、应届生/计算机专业、鸿蒙爱好者等人群,整理了一套纯血版鸿蒙(HarmonyOS Next)全栈开发技术的学习路线【包含了大厂APP实战项目开发】

本路线共分为四个阶段:

第一阶段:鸿蒙初中级开发必备技能

在这里插入图片描述

第二阶段:鸿蒙南北双向高工技能基础:gitee.com/MNxiaona/733GH

第三阶段:应用开发中高级就业技术

第四阶段:全网首发-工业级南向设备开发就业技术:gitee.com/MNxiaona/733GH

《鸿蒙 (Harmony OS)开发学习手册》(共计892页)

如何快速入门?

1.基本概念
2.构建第一个ArkTS应用
3.……

开发基础知识:gitee.com/MNxiaona/733GH

1.应用基础知识
2.配置文件
3.应用数据管理
4.应用安全管理
5.应用隐私保护
6.三方应用调用管控机制
7.资源分类与访问
8.学习ArkTS语言
9.……

基于ArkTS 开发

1.Ability开发
2.UI开发
3.公共事件与通知
4.窗口管理
5.媒体
6.安全
7.网络与链接
8.电话服务
9.数据管理
10.后台任务(Background Task)管理
11.设备管理
12.设备使用信息统计
13.DFX
14.国际化开发
15.折叠屏系列
16.……

鸿蒙开发面试真题(含参考答案):gitee.com/MNxiaona/733GH

鸿蒙入门教学视频:

美团APP实战开发教学:gitee.com/MNxiaona/733GH

写在最后

  • 如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:
  • 点赞,转发,有你们的 『点赞和评论』,才是我创造的动力。
  • 关注小编,同时可以期待后续文章ing🚀,不定期分享原创知识。
  • 想要获取更多完整鸿蒙最新学习资源,请移步前往小编:gitee.com/MNxiaona/733GH

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1678864.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CIBERSORTx网页版报错

解决方式:bulk RNA-seq不能包含NA值

大白话!大模型(LLMs)私有化的三种方式:Prompts、Embeddings、Fine-tuning

私有化大模型的三种方式 随着我们使用大模型的深入呢,我们会发现这样一个现象,我们正常情况下问大模型的问题,会得到一个非常普适的回答,就是大模型会根据自己的训练的这个过往的一些知识的积累,然后告诉我们他认为最…

海外盲盒系统开发,开拓全球盲盒市场

盲盒作为经久不衰的行业,市场发展空间不断扩大。近几年,盲盒出海成为了我国盲盒发展的新赛道,各个盲盒企业更是纷纷摩拳擦掌,开拓海外市场,我国盲盒正在全世界范围内实现多元化发展。此外,我国是世界上有名…

光伏行业该如何起步?

随着全球对可再生能源的需求日益增长,光伏行业作为其中的佼佼者,正迎来前所未有的发展机遇。然而,对于新进入者或希望在这一领域有所建树的企业来说,如何起步并稳健发展是一个值得深思的问题。以下是一些关于光伏行业起步的建议。…

AniPortrait详细讲解以及完整搭建流程(有问题留言)

AniPortrait是一款真实感人像动画的音频驱动合成的AI程序。 下面是它的github源码: GitHub - Zejun-Yang/AniPortrait: AniPortrait: Audio-Driven Synthesis of Photorealistic Portrait AnimationAniPortrait: Audio-Driven Synthesis of Photorealistic Portrait Animati…

[Vs2019报错找不到服务实例的解决方案]

计算机疑难杂症记录与分享004 Vs2019报错找不到服务实例的解决方案1、问题现象1.1、问题一:打开vs2019打开项目工程文件,直接弹窗报错1.2、问题二:能打开工程了。识别项目文件不兼容问题。 2、问题原因3、问题一的解决3.1、方法一(亲测无效)3…

Java的response返回Json格式

问题 今天开发过程中,写了个拦截器,对于所以请求进行一个token的工作,对于不合标准的token返回错误,在网上找了个拦截器进行二次开发。 package com.maizhiyu.yzt.handle;import org.springframework.beans.factory.annotation.…

Python数据分析常用模块的介绍与使用

Python数据分析模块 前言一、Numpy模块Numpy介绍Numpy的使用Numpy生成数组ndarrayarray生成数组arange生成数组random生成数组其他示例 关于randint示例1示例2 关于rand Numpy数组统计方法示例 二、Pandas模块pandas介绍Series示例 DataFrame示例 三、其他模块Matplotlib/Seabo…

通过单总线实现单片机之间的数据传输

单总线、没有时钟线的通信时,不能使用简单的高低电平来通信,因为接收方不知道此时发送的数据是第几位数据,容易造成错乱。 因此在使用一根线对外传输数据时,需要自定义一个通信协议,它至少要包含格式头数据&#xff0c…

什么是直接内存(NIO)

直接内存不受 JVM 内存回收管理,是虚拟机的系统内存,常见于 NIO 操作时,用于数据 缓冲区,分配回收成本较高,但读写性能高,不受 JVM 内存回收管理。 举例 当上传一个较大文件(200M)…

python REST 请求验证

REST 请求验证 在Python中,可以使用cerberus库来进行REST请求的验证。以下是一个简单的示例,演示如何使用cerberus进行请求数据的验证。 首先,安装cerberus库: pip install cerberus # 安装cerberus库 -- Anaconda 环境下安装 …

SQL常用函数

一、日期相关函数 1、CURDATE() / CURRENT_DATE 返回当前日期 2、CURRENT_TIME()/CURTIME() 返回当前时间 3、CURRENT_TIMESTAMP 返回当前日期时间 4、DATE()从日期或日期时间表达式中提取日期值 5、DATEDIFF(d1,d2)计算日期 d1->d2 之间相隔的天数 6、DATE_FORMAT按表达式…

【C++】从零开始构建二叉搜索树

送给大家一句话: 我们始终有选择的自由。选错了,只要真诚的反思,真诚面对,也随时有机会修正错误和选择。 – 《奇迹男孩(电影)》 💻💻💻💻💻💻💻…

Google I/O 2024:探索未来AI技术的无限可能

近日,Google I/O 2024大会圆满落幕,带给我们一场关于人工智能的盛宴。在这场大会上,Google推出了一系列令人激动的AI新功能和工具,让我们得以一窥未来的科技发展。今天,就让我来为大家总结一下这些亮点吧! …

客观需求验证的常见5大步骤(实施版)

我们在挖掘用户需求时,往往容易犯伪需求或需求错位等问题,因此需要进行客观需求验证。通过客观的验证,我们可以有效减少主观判断误差问题,确保需求的准确性,从而降低需求变更和项目风险的概率,减少开发成本…

Linux bc命令(bc指令)(基本计算器)(任意精度计算语言:支持浮点数运算、变量赋值和自定义函数等)

文章目录 bc命令文档英文中文 Linux bc 命令详解bc 命令的基本用法启动 bc 环境进行基本计算退出 bc bc 中的数学功能执行高级数学计算平方根和指数函数对数函数 处理精度问题 变量和数组变量赋值和使用数组的使用 创建和使用自定义函数 bc 命令的高级用法在脚本中使用 bc基本脚…

我与C++的爱恋:string类的常见接口函数

​ ​ 🔥个人主页:guoguoqiang. 🔥专栏:我与C的爱恋 朋友们大家好啊,本节我们来到STL内容的第一部分:string类接口函数的介绍 ​ ​ 1.string类的认识 给大家分享一个c文档 https://legacy.cplusplus.…

Java | 增强for底层工作机制

✍🏼作者:周棋洛,bilidown开发者。 ♉星座:金牛座 🏠主页:我的个人网站 🌐关键:Java 增强for 工作机制 目录 引言增强for循环语法增强for工作机制探究简单总结1.对于实现了Iterable接…

LeetCode算法题:11. 盛最多水的容器(Java)(双指针问题总结)

给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 提示&#xff1a; n height.length2 <…

寻求发展+兼顾陪读|企业高管赴美国乔治梅森大学做访问学者

E经理拟去美国访学&#xff0c;想达到3个目的&#xff1a;结合本专业方向&#xff0c;扩展至跨学科研究领域&#xff1b;考察市场&#xff0c;寻求新的发展契机&#xff1b;携孩子出国读书&#xff0c;兼顾陪读&#xff0c;并希望尽早出国。最终我们为其落实的乔治梅森大学访问…