harmonyos arkts 开发商品页面

1.结果展示

2. 实现分层组件

1.1 实现搜索栏

1.2 代码

这段代码是一个构建搜索框组件的方法,具体功能包括:

- 创建一个Search组件,设置初始值为this.keyword,placeholder为'请输入书名...'
- 添加一个搜索按钮,并设置按钮文本为'搜索'
- 设置Search组件的宽度为100%,高度为50
- 设定背景颜色为'#F5F5F5'
- 设置placeholder的颜色为灰色
- 设置placeholder的字体样式为大小14、粗细400
- 设置输入文字的字体样式为大小20、粗细400
- 绑定onSubmit事件处理函数,当用户点击搜索按钮时调用this.searchBooks(value),其中value为用户输入的搜索关键词
- 绑定onChange事件处理函数,当用户改变搜索框内容时将this.keyword更新为最新的输入值

这个方法实现了一个简单的搜索框功能,用户可以在输入框中输入关键词进行搜索,并且支持点击搜索按钮或者直接回车键执行搜索操作。同时也会实时更新this.keyword的数值,以便在搜索时传递正确的关键词参数。

 @Builder buildSearch() {Search({ value: this.keyword, placeholder: '请输入书名...' }).searchButton('搜索').width('100%').height(50).backgroundColor('#F5F5F5').placeholderColor(Color.Grey).placeholderFont({ size: 14, weight: 400 }).textFont({ size: 20, weight: 400 }).onSubmit((value: string) => {this.searchBooks(value)}).onChange((value: string) => {this.keyword = value})}

2.1 实现商品卡片

2.2 卡片代码

这段代码定义了一个名为ItemCard的组件结构,主要用于展示书籍信息。下面是该组件的功能逻辑描述:

- ItemCard组件包含一个私有属性book,用于存储书籍信息。

- build方法用于构建整个书籍信息展示的结构,包括左侧容器和右侧容器。

- 左侧容器部分使用Row布局,包含一个文本框,展示书名this.book.bookname,设置字体样式为斜体,字体大小为15,背景颜色为透明紫红色,字体颜色为白色,宽度占30%,高度为60,边框圆角为10,文本居中显示,左外边距为5。

- 右侧容器部分使用Column布局,包含价格信息和作者、出版社信息。价格信息展示为'价格为:¥' + this.book.price.toFixed(3),字体颜色为蓝色,字体大小为20。作者和出版社信息分别显示为"作者:" + this.book.author 和 "出版社:" + this.book.publisher,字体颜色为黑色,字体大小为12。这两个信息在同一行显示,宽度占右侧容器的68%,并且内容左右对齐。

- 整个ItemCard组件的样式设置为宽度占97%,高度为80,内容左右对齐,背景颜色为淡粉色,边框圆角为20。

总体来说,ItemCard组件通过左右两个容器分别展示书名、价格以及作者、出版社等信息

@Component
struct ItemCard{private bookbuild(){Row() {// 左侧容器Text(this.book.bookname).fontStyle(FontStyle.Italic).fontSize(15).backgroundColor("#ff404aa9").fontColor('white').width("30%").height('60').borderRadius(10).textAlign(TextAlign.Center).margin({ left: '5' })// 右侧容器Column() {Text('价格为:¥' + this.book.price.toFixed(3)).fontColor('blue').fontSize(20)Row(){Text("作者:" + this.book.author).fontColor('black').fontSize(12)Text("出版社:" + this.book.publisher).fontColor('black').fontSize(12)}.width('68%').justifyContent(FlexAlign.SpaceBetween)}.width("70%").borderRadius(10)}.width("97%").height("80").justifyContent(FlexAlign.SpaceBetween).backgroundColor("#fff3f3fc").borderRadius(20)}
}

2.3 实现收藏效果

2.4 收藏效果代码

  @Builder SaveBtn(bookno:string){Button("收藏").width("60").height('40').backgroundColor('#fff3f6f5').fontColor("#ff181a19").onClick(()=> {this.saveBook(bookno)})}

3. 全部代码(书籍数据来源于接口,可以自己适当的自定义一串json数据作为接口数据)

  pageSize: number = 10@State page:number =0 //总页面httpUtil: http.HttpRequest// todo 传递用户id@State userID:string=""searchBooks(keyword:string) {this.httpUtil.request(`192.168.**.***/books/${this.cur}/${this.pageSize}`,{method: http.RequestMethod.GET,extraData: { 'k': "bookname", 'v': this.keyword }}).then(res => {let jsonResult = res.result.toString()let responseObject = JSON.parse(jsonResult)this.try= responseObject.data// 当前页面this.cur=responseObject.cur// 总共页面this.page=responseObject.pages}).catch(err => {console.log('数据传输http错误')})}async saveBook(bookno:string){// todo 收藏逻辑// todo 1.找到用户与书籍信息,直接saveconst res = await this.httpUtil.request(`localhost/save/insert?rno=${this.userID}&bno=${bookno}`,{method: http.RequestMethod.POST,})console.log(res.result.toString())// todo 2.收藏成功 prompt传递弹窗Prompt.showToast({message:"收藏成功"})}aboutToAppear() {let httpRequest = http.createHttp()this.httpUtil = httpRequest// todo 传递用户编号this.userID = AppStorage.Get("info")// todo 查询全部图书this.searchBooks("")}

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

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

相关文章

Go语言必知必会100问题-20 切片操作实战

前言 有很多gopher将切片的length和capacity混淆,没有彻底理清这两者的区别和联系。理清楚切片的长度和容量这两者的关系,有助于我们合理的对切片进行初始化、通过append追加元素以及进行复制等操作。如果没有深入理解它们,缺少高效操作切片…

Linux安装MeterSphere并结合内网穿透实现公网远程访问本地服务

文章目录 前言1. 安装MeterSphere2. 本地访问MeterSphere3. 安装 cpolar内网穿透软件4. 配置MeterSphere公网访问地址5. 公网远程访问MeterSphere6. 固定MeterSphere公网地址 前言 MeterSphere 是一站式开源持续测试平台, 涵盖测试跟踪、接口测试、UI 测试和性能测试等功能&am…

【Linux】shell理解及linux权限解读(“花花公子Root”的自由人生)

目录 1.shell外壳理解 1.1 什么是shell外壳: 1.2 为什么存在shell外壳程序: 1.3外壳程序的具体工作阶段是怎么样的?(招实习生,工作失败也不影响公司) 2.linux下的权限的概念 2.1linux的用户 2.2.文件类型和…

[天天向上] 学习方法论-事半功倍的问题解决方法

目录 一、尝试独立解决问题1. 关于独立2. 像密室逃脱一样 二、提问的艺术1. 合适的自我介绍1.1 群名片2.2 研究方向/业务内容 2. 详细的问题描述2.1 问题描述要点2.2 描述格式2.3 问题内容描述,尤其是当前进展和问题 3. 如何让更多的人为你解答4. 如何结束提问更优雅…

从零搭建React18.2+ReactRoute6.22+TS5+RTK2.2搭配antd5+antd-style书写All in Js完整体验项目规范

1. 使用CRA创建项目 全局设置npm淘宝镜像源 npm config set registry https://registry.npmmirror.com -g使用最新版create-react-app初始化项目结构 npx create-react-app custom-template --template typescript初始化项目之后在package.json文件中配置使用node>18.0.0…

【AI辅助研发】-趋势:大势已来,行业变革

【AI辅助研发】-趋势:大势已来,行业变革 引言 在科技日新月异的今天,人工智能(AI)技术已逐渐渗透到各行各业,其中软件研发行业更是受益匪浅。AI辅助研发已成为大势所趋,不仅提高了软件开发的效…

算法 环形数组是否存在循环 力扣执行速度击败100%

目录 题目 leetcode 457 求解思路 代码 结果 题目 leetcode 457 存在一个不含 0 的 环形 数组 nums ,每个 nums[i] 都表示位于下标 i 的角色应该向前或向后移动的下标个数: 如果 nums[i] 是正数,向前(下标递增方向&#xff0…

Orange3数据预处理(预处理器组件)

1.组件介绍 Orange3 提供了一系列的数据预处理工具,这些工具可以帮助用户在数据分析之前准备好数据。以下是您请求的预处理组件的详细解释: Discretize Continuous Variables(离散化连续变量): 这个组件将连续变量转…

第3章 数据链路层(1)

3.1数据链路层的功能 加强物理层传输原始比特流的功能,将可能出差错的物理连接改成逻辑上无差错的数据链路[节点的逻辑通道] 3.1.1 为网络提供服务 (1).无确认的无连接服务 适合通信质量好的有线传输链路(实时通信或误码率较低的通信信道)【例如以太网】(2).有确认的无连接服务…

重读 Java 设计模式: 解析单例模式,保证唯一实例的创建与应用

本周工作太忙了,变成了加班狗,下班回来也没时间写,只能利用周末时间写了😭。 好了,言归正传,本次我们先来介绍下设计模式中创建型模式-单例模式。 一、引言 单例模式是设计模式中最简单但又最常用的一种模…

springboot260火锅店管理系统

火锅店管理系统设计与实现 摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装火锅店管理系统软件来发挥其高效…

Cloud-Sleuth分布式链路追踪(服务跟踪)

简介 在微服务框架中,一个由客户端发起的请求在后端系统中会经过多个不同的服务节点调用来协同产生最后的请求结果,每一个前端请求都会形成一条复杂的分布式服务调用链路,链路中的任何一环出现高延时或错误都会引起整个请求最后的失败 GitHub - spring-cloud/spring-cloud-sl…