鸿蒙笔记导航栏,路由,还有axios

1.导航组件

导航栏位置可以调整,导航栏位置

@Entry
@Component
struct t1 {build() {Tabs(){TabContent() {Text('qwer')}.tabBar("首页")TabContent() {Text('发现内容')}.tabBar('发现')TabContent() {Text('我的内容')}.tabBar("我的")}// 做平板适配的.vertical(false)}
}

可滚动就是加个方法即可

.barMode(BarMode.Scrollable)

自定义导航 @Build 表示组件ui的复用,相当于抽取出来个组件,差不多的意思。

ArkUI还提供了⼀种更轻量的UI元素复用机制 @Builder , @Builder 所装饰的函数遵循
build() 函数语法规则,开发者可以将重复使用的UI元素抽象成⼀个方法,在build方法里调用。

 Image(this.currentIndex === index ? iconSelected : icon)

这句话我们知道选的是哪个tags,根据index

这个是什么意思,是当前导航栏的意思吗?

   .onChange((index) => {
      this.currentIndex = index;
    })

@Entry
@Component
struct BarCustomPage {@State currentIndex: number = 0;build() {Tabs() {TabContent() {Text('首页')}.tabBar(this.barBuilder(0, '主页', $r('app.media.icon_home'), $r('app.media.icon_home_selected')))TabContent() {Text('消息')}.tabBar(this.barBuilder(1, '消息', $r('app.media.icon_message'), $r('app.media.icon_message_selected')))TabContent() {Text('我的')}.tabBar(this.barBuilder(2, '我的', $r('app.media.icon_mine'), $r('app.media.icon_mine_selected')))}.barPosition(BarPosition.End).onChange((index) => {this.currentIndex = index;})}@Builder barBuilder(index: number, title: string, icon: Resource, iconSelected: Resource) {Column() {Image(this.currentIndex === index ? iconSelected : icon).width(25).height(25)Text(title).fontColor(this.currentIndex === index ? '#0491d1' : '#8a8a8a').fontWeight(FontWeight.Medium)}}
}

上面为什么tarBar可以放个函数进去

tarbar源码需要的参数,我发现这鸿蒙感觉和java太像了没啥意思,听这课无聊的批爆,不推荐大家学。

这源码说了,tarbar可以给的参数有string,resource,customerbuild(这个是个回调函数),或者{。。。。}这个意思是有以下参数的函数。

2.页面路由

给每个页面配个唯一标识,然后让他跳。

router模块提供了两种跳转模式,分别是router.pushUrl()router.replaceUrl(),这两种模式的区别在于是否保留当前页的状态。pushUrl()会将当前页面压入历史页面栈,因此使用该方法跳转到目标页面之后,还可以再返回。而replaceUrl(),会直接销毁当前页面并释放资源,然后用目标页替换当前页,因此使用该方法跳转到目标页面后,不能返回。

页面栈什么意思?

栈底,栈顶,相当于有一个栈,里面可以存多个页面,可以回滚页面,初始的页面就放栈底?比如首页点登录,push到登录页面,因为要回首页,登录成功,回首页就replace,把登录干掉就行了,不要回滚。

页面跳转,这个文件看,在main_pages.json中配置自己的路由和vue差不多,你要用哪些路由在这个文件配置

或者

它会自动添加路由

刚才报了个错,如果你要跳的话,你必须要把你准备跳的那个界面同样添加到路由地址那里。

服了,它又不给提示,只有靠自己猜,这点差评,错误提示不明显。

import router from '@ohos.router'
@Entry
@Component
struct t2 {build() {Row({space:20}){Button("11").onClick(()=>{router.pushUrl({url:"pages/day03/Page1"})})}}
}

页面返回

router.back({url:'pages/Index'})

可以指定个路径返回

4.传递参数

可以在调用上述方式时,添加一个params属性,并指定一个对象作为参数

目标页面可通过router.getParams()方法获取参数

对象可以 as来获取对象

也可以不用传对象哈

发送页

import router from '@ohos.router'export  class ProDto{id:numberproductName:stringprice:numberconstructor(id: number, productName: string, price: number) {this.id = idthis.productName = productNamethis.price = price}
}
@Entry
@Component
struct t2 {build() {Row({space:20}){Button("11").onClick(()=>{router.pushUrl({url:"pages/day03/Page1",params: new ProDto(1,"wawa",6999)})})}}
}

接受方


import router from '@ohos.router';
import { ProDto } from '../day03/T1';
@Entry
@Component
struct Page1 {@State message: string = 'Hello World';build() {RelativeContainer() {Text(this.message).id('Page1HelloWorld').fontSize(50).fontWeight(FontWeight.Bold).alignRules({center: { anchor: '__container__', align: VerticalAlign.Center },middle: { anchor: '__container__', align: HorizontalAlign.Center }})Button("获取参数").onClick(()=>{// let obj :ProDto=()router.getParams() as ProDto;let obj:ProDto = router.getParams() as ProDto;// console.log(obj.productName)console.log(obj.id+"")console.log(obj.productName+"")console.log(obj.price+"")})}.height('100%').width('100%')}
}

组件的构造函数

普通组件的生命周期

aboutApeear:组件出现之前,build之前

build:构建页面结构

abouttoDisappear:销毁之前,build之后

入口组件的生命周期,打了@entry的那个组件

独有的三个

onpageshow:每次页面显示的时候,路由跳转过去,后台进入前台

onpageHide:每次隐藏都会调用一次

onbackpress:每次点击返回按钮会被调用

使用axios

系统权限 用户权限

就手机那些权限

配置权限

开发者需要在entry/src/main/module.json5文件中声明所需权限,具体格式如下

从这英文来看,似乎是什么网络权限,我在想后面,需要什么权限的话,同样也可以在上面配吧。

{"module": {......"requestPermissions": [{"name": 'ohos.permission.INTERNET'}]}
}

在terminal安装  ohpm类似于npm

ohpm i @ohos/axios

安装不起,我看有些需要在path路径上添加ohpm,但是我没有添加依旧下起了,不知道为什么

安装好了

const instance = axios.create({baseURL: 'http://<ip>:<port>',timeout: 2000
})

注意:需要根据实际情况替换上述的ip地址和端口号

第二步

创建axios实例后,便可通过该实例的api来发送各种http请求,常用的api定义如下

api功能
get(url, config?): Promise发送GET请求
delete(url, config?): Promise发送DELETE请求
post(url, data?, config?): Promise发送POST请求
put(url, data?, config?): Promise发送PUT请求

第三步返回值也是一样的

then和catch

上述api的返回值类型均为PromisePromise是JavaScript中用于表示异步操作结果的对象,若操作成功,其中会包含具体结果,若操作失败,其会包含错误的原因。在实际应用中,开发者可以通过该对象的then()方法来处理操作成功时的结果,通过catch()方法来处理操作失败的情况,例如

get(...).then((response:AxiosResponse)=>{//处理请求成功的结果...}).catch((error:AxiosError)=>{//处理请求失败的错误...})

自己实战测试了下

关于axios传递参数,它可以有多个方式,可以放个对象,也可以其他。

import axios, { AxiosError, AxiosResponse } from '@ohos/axios'//创建axios实例
const instance = axios.create({baseURL: 'http://127.0.0.1:8888',timeout: 1000
})@Entry
@Component
struct AxiosPage {@State phone: string = ''@State code: string = ''build() {Column({ space: 40 }) {Button('发送验证码').onClick(() => {console.log("1322")//发送get请求instance.get('/t1').then((response:AxiosResponse) => {this.code = response.dataconsole.log(this.code)}).catch((error:AxiosResponse) => {console.log(error.data)})})}.width('100%').height('100%').justifyContent(FlexAlign.Center).padding(20)}
}

成功了哈

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

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

相关文章

【Springer出版 | EI稳定检索】第五届物联网、人工智能与机械自动化国际学术会议 (IoTAIMA 2024,7月19-21)

由浙江工业大学主办&#xff0c;第五届物联网、人工智能与机械自动化国际学术会议 (IoTAIMA 2024) 将于2024年7月19-21日在浙江杭州召开。 会议旨在为从事物联网、人工智能与机械自动化的专家学者、工程技术人员、技术研发人员提供一个共享科研成果和前沿技术&#xff0c;了解学…

基于java+springboot+vue实现的药店管理系统(文末源码+Lw)285

摘 要 传统信息的管理大部分依赖于管理人员的手工登记与管理&#xff0c;然而&#xff0c;随着近些年信息技术的迅猛发展&#xff0c;让许多比较老套的信息管理模式进行了更新迭代&#xff0c;药品信息因为其管理内容繁杂&#xff0c;管理数量繁多导致手工进行处理不能满足广…

SSM家庭理财个人理财系统-JAVA【数据库设计、源码、开题报告】

第一章 绪论 1.1 课题背景、目的及意义 从 20 世纪末以来&#xff0c;在全球经济日趋一体化的背景之下&#xff0c;中国经济也得到了飞速的发展&#xff0c;家庭收入也快速增长。居民的消费结构发生了巨大变化&#xff0c;购置房产、旅游、汽车消费、教育等成为居民消费重点。…

一维前缀和的实现

这是C算法基础-基础算法专栏的第十一篇文章&#xff0c;专栏详情请见此处。 引入 我们用朴素做法求一维数组的区间和时&#xff0c;一般是从前向后循环累加&#xff0c;它的时间复杂度为&#xff0c;当求区间和的次数过多&#xff0c;则会有超时的可能&#xff0c;那有没有时间…

算法设计练笔

T1、给定由n个整数&#xff08;可能为负数&#xff09;组成的序列a1,a2,...,an&#xff0c;求该序列子段和的最大值。当所有整数均为负数时&#xff0c;其最大子段和为0。 【输入】 第一行一个整数&#xff0c;表示n的值, 1<n<100; 第二行n个整数&#xff0c;表示a1,a2,.…

【Unity URP】通过代码动态添加URP渲染通道RendererFeature

URP的渲染通道RendererFeature可以很方便的实现一些渲染问题,比如渲染顺序问题,遮挡后的材质替换等等。 那么我们如何通过代码来动态添加和修改呢? 首先我们需要获取到当前的URP配置文件,在对配置文件进行添加 1.通过反射获取当前UniversalRendererData 我们通过Graphic…

中国移动中国联通中国电信数字化转型营销销售讲师培训老师讲授AIGC大模型人工智能5G云算力网络云网终端AIGC人工智能宽带政企物联网专线 IDC智慧城市

唐兴通 数字化商业创新顾问、新媒体营销专家、数字化销售增长教练、沃顿商学院演讲嘉宾。全球创新增长战略大家EM罗杰斯&#xff08;创新的扩散&#xff09;、杰弗里摩尔&#xff08;跨越鸿沟&#xff09;、亨利切萨布鲁夫&#xff08;开放式创新&#xff09;在中国合作者。《…

gitee代码初次上传步骤

ps. 前提是已经下载安装gitee 一、在本地项目目录下空白处右击&#xff0c;选择“Git Bash Here” 二、初始化 git init 三、添加、提交代码&#xff08;注意add与点之间的空格&#xff09; git add . git commit -m 添加注释 四、连接、推送到gitee仓库 git remote add …

Java——IO流(二)-(4/7):不同编码读取乱码的问题,转换流-InputStreamReader、OutputStreamWriter

目录 不同编码读取出现乱码的问题 转换流 InputStreamReader(字符输入转换流) 实例演示(1) OutputStreamWriter(字符输出转换流) 实例演示(2) 不同编码读取出现乱码的问题 如果代码编码和被读取的文本文件的编码是一致的&#xff0c;使用字符流读取文本文件时不会出现乱…

【Mac】adobe CameraRaw 16 for mac(ps插件RAW处理工具)软件介绍

软件介绍 Adobe Camera Raw是一款专为处理和编辑数字照片原始文件&#xff08;RAW文件&#xff09;而设计的插件&#xff0c;它提供了丰富的功能来调整和优化图像。以下是它的主要特点和功能&#xff1a; 支持广泛的RAW格式&#xff1a; Adobe Camera Raw 16 支持处理来自各…

推出新的C2000™ F28P65x 实时微控制器,专为高效控制电力电子产品而构建(F28P650DH、F28P650DK、F28P650SH)

C2000™ F28P65x 实时微控制器是集中级性能、PWM 和模拟创新与系统成本优化等优势于一身。 F28P65x 系列是 C2000™ 实时微控制器 (MCU) 系列的中级性能系列产品&#xff0c;专为高效控制电力电子产品而构建。凭借超低延迟&#xff0c;F28P65x 通过更多的模拟功能和新的 PWM 功…

关于Unity粒子(2D序列帧粒子)的旋转、StartRotation值用脚本怎么动态设置

今天要用粒子做一个拖尾效果。由于对象的移动可以向任何方向&#xff0c;所以作为拖尾的粒子要根据方向做相应的旋转。 1.没有旋转的情况&#xff08;物体向下移动&#xff09;时&#xff0c;默认是下面这样的。 粒子发射器的形状是一个向上的长方形&#xff0c;粒子的移动方向…

基于LabVIEW的设备安装螺栓连接设计

介绍了一种基于LabVIEW的辅助设备安装螺栓连接设计案例。通过LabVIEW软件&#xff0c;实现了从螺栓规格预估、强度校核到物料选用的整个流程的软件化&#xff0c;提高了设计效率和安装可靠性。 项目背景 在轨道车辆设备安装中&#xff0c;螺栓连接作为一种常见的紧固方式&…

Python制作动态颜色变换:颜色渐变动效

文章目录 引言准备工作前置条件 代码实现与解析导入必要的库初始化Pygame颜色变换函数主循环 完整代码 引言 颜色渐变动画是一种视觉上非常吸引人的效果&#xff0c;常用于网页设计和图形应用中。在这篇博客中&#xff0c;我们将使用Python创建一个动态颜色变换的动画效果。通…

大学教师门诊预约小程序-计算机毕业设计源码73068

摘要 在当今数字化、信息化的浪潮中&#xff0c;大学校园的服务管理正朝着智能化、便捷化的方向迈进。为了优化大学教师的医疗体验&#xff0c;提升门诊预约的效率和便捷性&#xff0c;我们基于Spring Boot框架设计并实现了一款大学教师门诊预约小程序。该小程序不仅提供了传统…

数据集归一化处理

&#x1f4da;博客主页&#xff1a;knighthood2001 ✨公众号&#xff1a;认知up吧 &#xff08;目前正在带领大家一起提升认知&#xff0c;感兴趣可以来围观一下&#xff09; &#x1f383;知识星球&#xff1a;【认知up吧|成长|副业】介绍 ❤️如遇文章付费&#xff0c;可先看…

8分钟带你快速了解Connector/Catalog API的核心设计

引言 在现代大数据应用中&#xff0c;数据集成和同步成为企业数据管理的关键环节。随着数据源和数据库的多样化&#xff0c;如何高效地进行数据集成成为企业面临的重要挑战。 Apache SeaTunnel 作为一款开源的数据集成工具&#xff0c;致力于解决这一问题。本文将详细介绍 Sea…

【Oracle】Oracle常用函数

目录 聚合函数数字函数1. ABS函数&#xff1a;返回一个数的绝对值。2. CEIL函数&#xff1a;返回大于等于给定数的最小整数。3. FLOOR函数&#xff1a;返回小于等于给定数的最大整数。4. ROUND函数&#xff1a;将一个数四舍五入到指定的小数位。5. MOD函数&#xff1a;返回两个…

Java 面向对象编程(OOP)的四大特征

Java 面向对象编程&#xff08;OOP&#xff09;的四大特征 1、抽象2、继承3、 封装4、多态性 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 在Java编程中&#xff0c;面向对象编程&#xff08;OOP&#xff09;是一个核心概念。OOP的四大基…

总结一下 .NET FrameWork 和 .NET Core 创建的项目的不同点

前言 从 Visual Studio 2022 开始&#xff0c;微软开始淡化 .NET Framework 的概念&#xff0c;在项目向导中&#xff0c;只有使用带 “.NET Framework” 的项目模板创建的才是 .NET Framework 项目&#xff0c;使用其他模板创建的都是 .NET Core 项目 比如&#xff0c;如果你…