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 book
  build(){
    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.找到用户与书籍信息,直接save
    const 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("")
  }

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

k8s应用综合实例

k8s应用综合实例 目录 k8s应用综合实例 目录 原文链接 推荐文章 实验环境 实验软件 本节实战 预期 原理 高可用 稳定性 避免单点故障 使用 PDB 健康检查 服务质量 QoS QoS类型 资源回收策略 滚动更新 失败原因 零宕机 HPA 安全性 持久化 Ingress FAQ …

【项目笔记】java微服务:黑马头条(day01)

文章目录 环境搭建、SpringCloud微服务(注册发现、服务调用、网关)1)课程对比2)项目概述2.1)能让你收获什么2.2)项目课程大纲2.3)项目概述2.4)项目术语2.5)业务说明 3)技术栈4)nacos环境搭建4.1)虚拟机镜像准备4.2)nacos安装 5)初始工程搭建5.1)环境准备5.2)主体结构 6)登录6.1…

scipy一维卷积函数convolve1d

文章目录 基本原理convolve1d函数实战 基本原理 卷积是一种积分变换方法,可理解为滑动平均的推广,在连续函数和数列上的定义分别为 f ( t ) ∗ g ( t ) ∫ f ( τ ) g ( t − τ ) d τ x ( n ) ∗ h ( n ) ∑ x ( i ) h ( n − i ) f(t)*g(t) \int …

第二课 情感认知模型

一、学习目标 1.学习各种思想的情感模型 2.了解通过情感诱发方法所建立的情感模型 二、情感模型 想要进行情感计算,首先步骤就是对情感建模,要分析理解情感的产生,从而才能让计算机理解情感。由于情感是感性的,所以现有的情感模…

贪心算法(蓝桥杯 C++ 题目 代表 注解)

介绍: 贪心算法(Greedy Algorithm)是一种在每一步选择中都采取当前状态下最好或最优(即最有利)的选择,从而希望最终能够得到全局最好或最优的结果的算法。它通常用来解决一些最优化问题,如最小生…

实时智能应答3D数字人搭建

语音驱动口型的算法 先看效果: 你很快就可以帮得上我了 FACEGOOD 决定将语音驱动口型的算法技术正式开源,这是 AI 虚拟数字人的核心算法,技术开源后将大程度降低 AI 数字人的开发门槛。FACEGOOD是一家国际领先的3D基础软件开发商,…

恢复IDEA误删除的git提交,提交被删除,尝试恢复提交

​​​​​​ dgqDESKTOP-JRQ5NMD MINGW64 /f/IdeaProjects/workspace/spzx-parent ((8bb112e...)) $ git reflog 8bb112e (HEAD, origin/master, master) HEAD{0}: checkout: moving from master to 8bb112e5ac18dfe4bbd64adfd06363e46b609f21 8bb112e (HEAD, origin/master, …

第十三章StringTable

第十三章StringTable 文章目录 第十三章StringTable1. String的基本特性2. String的内存分配3. 字符串的拼接操作体会执行效率: 4. intern()的使用问题1new String("ab")会创建几个对象?看字节码…

PID的含义及查看方法(macOS系统和Windows系统)

一 PID的含义 PID是processs indentifier的缩写, 中文是进程标识符。我们每启动一个软件,系统都会生成一个进程,同时生成一个对应的PID(一串数字,一般从0开始),在软件运行期间,PID是…

Day34-Linux网络管理4

Day34-Linux网络管理4 1. IP地址分类与子网划分基础1.1 什么是IP地址1.2 十进制与二进制的转换1.3 IP地址的分类1.4 私网地址和局域网地址 2. 通信类型3. 子网划分讲解3.1 为什么要划分子网?3.2 什么是子网划分?3.3 子网划分的作用?3.4 子网划…

表单进阶(3)-上传文件和隐藏字段

上传文件&#xff1a;<input type"file"> 隐藏字段&#xff1a;<input type"hidden" name"" id"" value"带给后端的信息"> 禁用disabled&#xff1a;<button disabled"disabled">注册</bu…

简历--毕业论文

文章目录 MPLS VPN网络的设计与实施一、研究背景和意义二、研究内容2.1网络设计2.1.1 MPLS VPN配置思路2.1.2基本配置2.1.3 实验结果 三、结论其他 MPLS VPN网络的设计与实施 摘 要&#xff1a;本文选择研究对象是cisco的MPLS VPN网络&#xff0c;具有经济适用&#xff0c;扩展…

08 线性卷积

各位看官&#xff0c;大家好&#xff01;本讲为《数字信号处理理论篇》08 线性卷积。&#xff08;特别提示&#xff1a;课程内容为由浅入深的特性&#xff0c;而且前后对照&#xff0c;不要跳跃观看&#xff0c;请按照文章或视频顺序进行观看。 最近阳春三月&#xff0c;万物复…

HarmonyOS系统开发基础环境搭建

一 鸿蒙介绍&#xff1a; 1.1 HarmonyOS系统是华为自研的一款分布式操作系统&#xff0c;兼容Android&#xff0c;但又区别Android&#xff0c;不仅仅定位于手机系统。更侧重于万物物联和智能终端&#xff0c;目前已更新到4.0版本。 1.2 HarmonyOS软件编程语言是ArkTS&#x…

MySQL--索引优化实战篇(1)

前言&#xff1a; 我们常说的SQL优化&#xff0c;简单来说就是索引优化&#xff0c;通过合理创建索引&#xff0c;调整SQL语法等&#xff0c;来提升查询效率&#xff0c;想要进行SQL优化&#xff0c;就必须知道索引的原理&#xff0c;而且能够看懂SQL的执行计划。 MySQL–索引…

瑞芯微第二代8nm高性能AIOT平台 RK3576 详细介绍

RK3576处理器 RK3576瑞芯微第二代8nm高性能AIOT平台&#xff0c;它集成了独立的6TOPS&#xff08;Tera Operations Per Second&#xff0c;每秒万亿次操作&#xff09;NPU&#xff08;神经网络处理单元&#xff09;&#xff0c;用于处理人工智能相关的任务。此外&#xff0c;R…

ARM-v7 程序计数器PC的相关指令与应用

1. 前言 如图1所示&#xff0c;R14是连接寄存器&#xff08;Link Register&#xff09;&#xff0c;在汇编指令中通常也写为LR&#xff0c;用于存储函数调用和异常等的返回信息&#xff0c;复位时&#xff0c;默认值为0xFFFFFFFF&#xff1b; 图1 Core register R15是程序计数…

华为OD机考-C卷

文章目录 攀登者问题停车场最短路径 攀登者问题 24/03/09 20:50~23:10 攀登者喜欢寻找各种地图&#xff0c;并且尝试攀登到最高的山峰。地图表示为一维数组&#xff0c;数组的索引代表水平位置&#xff0c;数组的元素代表相对海拔高度。其中数组元素0代表地面。一个山脉可能有多…

【软考】单元测试

目录 1. 概念2. 测试内容2.1 说明2.2 模块接口2.3 局部数据结构2.4 重要的执行路径 3. 测试过程2.1 说明2.2 单元测试环境图2.3 驱动模块2.4 桩模块 4. 模块接口测试与局部数据结构测试的区别 1. 概念 1.单元测试也称为模块测试&#xff0c;在模块编写完成且无编译错误后就可以…

C++ 11 新特性线程mutex互斥访问共享变量

一.互斥锁介绍 互斥锁&#xff08;mutex&#xff09;是C11中用于保护共享资源的一种同步机制&#xff0c;其原理基于以下关键点&#xff1a; 独占所有权&#xff1a;std::mutex提供独占所有权的特性&#xff0c;即在同一时间只有一个线程能够拥有互斥锁。当一个线程拥有锁时&am…