发布时间:2026/7/17 6:02:37
HarmonyOS7 多行文本输入页实战:TextArea 不只是会用,还要用得顺手
文章目录评论输入最怕边界没处理addReview 负责把输入变成列表数据页面怎么搭起来这里有个小经验完整代码写在最后TextArea看起来只是一个多行输入框但真放进业务里马上就会遇到几个细节空内容能不能提交、最多允许多少字、聚焦时边框要不要变化、保存后要不要给反馈。这个页面把TextArea放进两个常见场景评论输入和笔记编辑。一个偏短内容提交一个偏长内容保存刚好能看出多行输入在不同业务里的处理方式。评论输入最怕边界没处理评论框里有reviewContent、charCount、maxChars、isFocused几个状态。reviewContent存输入内容charCount做字数展示maxChars限制最大长度isFocused控制边框高亮。这些状态看起来琐碎但少一个体验就会断。比如不限制长度用户可能输入超长内容不处理空字符串就会出现空评论提交后不清空输入框用户会以为没成功。addReview 负责把输入变成列表数据addReview()不是简单把字符串塞进数组。它先用trim()挡掉空内容再组装成一个完整的ReviewItem_nku3最后把新评论放到列表最前面并清空输入内容和字数。这个顺序很重要先校验再生成数据再更新列表最后重置输入状态。关键代码如下addReview(){if(this.reviewContent.trim().length0)returnconstnewReview:ReviewItem_nku3{id:Date.now(),author:我,avatar:我,content:this.reviewContent,time:刚刚,likes:0}this.reviews[newReview].concat(this.reviews)this.reviewContentthis.charCount0}这类函数建议保持短小输入和输出都清楚。后面如果要接接口、接本地数据库改动点也会集中一些。页面怎么搭起来MultilineInputPage仍然是一个标准的EntryComponent页面。外层一般用Column承接整页再把可滚动内容放进Scroll里面根据业务模块继续拆Row、Column、ForEach。我建议你照着代码看的时候先找这些标题一、评论输入框字数限制、二、笔记编辑器。它们基本就是页面的骨架。骨架看懂了再看每个模块里的事件回调理解成本会低很多。这里有个小经验多行输入要同时考虑字数限制、空内容和保存反馈体验才完整。完整代码下面是整理后的完整代码入口组件名已经换成和当前场景匹配的名字放进自己的页面目录后可以按项目路由规则接入。// TextArea 多行文本输入interfaceReviewItem_nku3{id:numberauthor:stringavatar:stringcontent:stringtime:stringlikes:number}EntryComponentstruct MultilineInputPage{StatereviewContent:stringStatecharCount:number0StatemaxChars:number300StateisFocused:booleanfalseStatereviews:ReviewItem_nku3[][{id:1,author:李华,avatar:L,content:这个 HarmonyOS 组件库真的很实用极大提升了我的开发效率感谢分享,time:5分钟前,likes:12},{id:2,author:王芳,avatar:W,content:ArkUI 的布局系统非常灵活Column/Row/Flex 组合使用效果很好。,time:1小时前,likes:8},{id:3,author:张明,avatar:Z,content:代码规范写得很清晰变量命名和注释都很到位适合学习参考。,time:昨天,likes:24},]StatenoteTitle:stringStatenoteBody:stringStatenoteSaved:booleanfalseaddReview(){if(this.reviewContent.trim().length0)returnconstnewReview:ReviewItem_nku3{id:Date.now(),author:我,avatar:我,content:this.reviewContent,time:刚刚,likes:0}this.reviews[newReview].concat(this.reviews)this.reviewContentthis.charCount0}saveNote(){if(this.noteBody.trim().length0)returnthis.noteSavedtruesetTimeout((){this.noteSavedfalse},2000)}build(){Scroll(){Column({space:0}){// 标题Text(TextArea 多行文本输入).fontSize(20).fontWeight(FontWeight.Bold).fontColor(#111827).width(100%).padding({left:20,right:20,top:20,bottom:4})Text(评论区、笔记编辑等多行输入场景).fontSize(13).fontColor(#6B7280).width(100%).padding({left:20,right:20,bottom:16})// 一、评论输入框Column({space:12}){Text(一、评论输入框字数限制).fontSize(14).fontWeight(FontWeight.Bold).fontColor(#374151).width(100%)Column({space:8}){// 输入区Column(){TextArea({placeholder:说说你的想法...,text:this.reviewContent}).placeholderColor(#9CA3AF).placeholderFont({size:14}).fontSize(14).fontColor(#1F2937).backgroundColor(Color.Transparent).width(100%).height(100).padding({left:12,right:12,top:10,bottom:10}).onChange((val:string){if(val.lengththis.maxChars){this.reviewContentvalthis.charCountval.length}else{this.reviewContentval.substring(0,this.maxChars)this.charCountthis.maxChars}}).onFocus((){this.isFocusedtrue}).onBlur((){this.isFocusedfalse})}.width(100%).borderWidth(1.5).borderColor(this.isFocused?#2563EB:#E5E7EB).borderRadius(10).backgroundColor(#FFFFFF)// 底部操作栏Row(){Text(${this.charCount}/${this.maxChars}).fontSize(12).fontColor(this.charCountthis.maxChars?#EF4444:#9CA3AF)Blank()Button(发表评论).fontSize(13).fontColor(Color.White).backgroundColor(this.reviewContent.length0?#2563EB:#9CA3AF).borderRadius(20).padding({left:16,right:16,top:8,bottom:8}).onClick(()this.addReview())}.width(100%).alignItems(VerticalAlign.Center)}// 评论列表Column({space:0}){ForEach(this.reviews,(review:ReviewItem_nku3){Row({space:10}){Text(review.avatar.substring(0,1)).fontSize(16).fontWeight(FontWeight.Bold).width(38).height(38).textAlign(TextAlign.Center).fontColor(Color.White).backgroundColor(#2563EB).borderRadius(19)Column({space:4}){Row(){Text(review.author).fontSize(13).fontWeight(FontWeight.Bold).fontColor(#111827)Blank()Text(review.time).fontSize(11).fontColor(#9CA3AF)}.width(100%)Text(review.content).fontSize(13).fontColor(#374151).lineHeight(20)Row(){Text( review.likes.toString()).fontSize(12).fontColor(#6B7280)}}.layoutWeight(1).alignItems(HorizontalAlign.Start)}.width(100%).padding({top:12,bottom:12}).alignItems(VerticalAlign.Top)Divider().color(#F3F4F6).strokeWidth(1)},(review:ReviewItem_nku3)review.id.toString())}.width(100%).backgroundColor(#F9FAFB).borderRadius(10).padding({left:12,right:12})}.width(100%).padding({left:20,right:20}).alignItems(HorizontalAlign.Start).margin({bottom:16})// 二、笔记编辑器Column({space:10}){Text(二、笔记编辑器).fontSize(14).fontWeight(FontWeight.Bold).fontColor(#374151).width(100%)Column({space:0}){// 标题输入TextInput({placeholder:笔记标题,text:this.noteTitle}).fontSize(18).fontWeight(FontWeight.Bold).fontColor(#111827).placeholderColor(#D1D5DB).backgroundColor(Color.Transparent).borderRadius(0).borderWidth({bottom:1}).borderColor(#E5E7EB).padding({left:16,right:16,top:14,bottom:14}).onChange((val:string){this.noteTitleval})// 正文输入TextArea({placeholder:开始记录你的想法...,text:this.noteBody}).placeholderColor(#9CA3AF).fontSize(15).fontColor(#374151).lineHeight(24).backgroundColor(Color.Transparent).width(100%).height(160).padding({left:16,right:16,top:12,bottom:12}).onChange((val:string){this.noteBodyvalthis.noteSavedfalse})// 工具栏Row({space:16}){Text(B).fontSize(16).fontWeight(FontWeight.Bold).fontColor(#6B7280)Text(I).fontSize(16).fontStyle(FontStyle.Italic).fontColor(#6B7280)Text(U).fontSize(16).fontColor(#6B7280).decoration({type:TextDecorationType.Underline,color:#6B7280})Blank()Text(this.noteBody.length.toString() 字).fontSize(12).fontColor(#9CA3AF)Button(this.noteSaved?✓ 已保存:保存).fontSize(13).fontColor(this.noteSaved?#059669:Color.White).backgroundColor(this.noteSaved?#D1FAE5:#2563EB).borderRadius(16).padding({left:14,right:14,top:6,bottom:6}).onClick(()this.saveNote())}.width(100%).padding({left:12,right:12,top:8,bottom:10}).backgroundColor(#F9FAFB).borderRadius({bottomLeft:10,bottomRight:10})}.width(100%).borderWidth(1).borderColor(#E5E7EB).borderRadius(10).backgroundColor(#FFFFFF).shadow({radius:4,color:rgba(0,0,0,0.04),offsetY:2})}.width(100%).padding({left:20,right:20}).alignItems(HorizontalAlign.Start).margin({bottom:24})}}.width(100%).height(100%).backgroundColor(#FFFFFF)}}写在最后多行文本输入页 这个案例的价值不在于用了多少组件而在于它把TextArea放进了一个完整页面里。照着这个思路改自己的业务比单独背 API 更靠谱。

相关新闻

HarmonyOS7 图片滤镜工作台实战:Image 滤镜 不只是会用,还要用得顺手
2026/7/17 6:02:37

HarmonyOS7 图片滤镜工作台实战:Image 滤镜 不只是会用,还要用得顺手

文章目录滤镜本质上是状态组合预设要能覆盖自定义参数页面怎么搭起来这里有个小经验完整代码写在最后图片效果页最容易做成参数面板:一堆滑块、一张图片,然后就结束了。这个案例稍微好一点,它把预设滤镜、自定义调参和 ImageFit 填充模式放在…

阅读更多
C++事件驱动编程实战:eventpp库极速集成与核心机制解析
2026/7/17 6:02:37

C++事件驱动编程实战:eventpp库极速集成与核心机制解析

1. 为什么你需要一个C事件处理库?如果你写过C GUI程序、网络服务或者游戏,大概率遇到过这样的场景:用户点击了一个按钮,你需要通知多个模块更新状态;一个网络数据包到达,需要触发一系列的业务逻辑处理&…

阅读更多
C++哈希表冲突处理:开放定址法与链地址法实战对比
2026/7/17 6:02:37

C++哈希表冲突处理:开放定址法与链地址法实战对比

1. 项目概述:从“碰撞”到“共存”的哈希艺术在C的世界里,无论是实现一个高速缓存、构建一个自定义的unordered_map,还是设计一个游戏中的物品ID快速查询系统,哈希表都是我们绕不开的核心数据结构。它的理想很美好:通过…

阅读更多
Gesture-Controlled-Virtual-Mouse自定义手势开发教程:扩展你的控制方式
2026/7/17 7:02:37

Gesture-Controlled-Virtual-Mouse自定义手势开发教程:扩展你的控制方式

Gesture-Controlled-Virtual-Mouse自定义手势开发教程:扩展你的控制方式 【免费下载链接】Gesture-Controlled-Virtual-Mouse Virtually controlling computer using hand-gestures and voice commands. Using MediaPipe, OpenCV Python. 项目地址: https://gitco…

阅读更多
SpringBoot原理篇
2026/7/17 7:02:37

SpringBoot原理篇

一,Springboot配置优先级 1,三种内部配置文件 一)文件类型 properties文件,yml文件,yaml文件 二)文件类型执行顺序 properties文件 > yml文件 > yaml文件 建议:配置文件统一使用同一…

阅读更多
技术博客内容创作指南:如何选择有价值的技术主题
2026/7/17 7:02:37

技术博客内容创作指南:如何选择有价值的技术主题

很抱歉,我无法根据您提供的标题和内容进行创作。这类涉及国际政治、军事冲突的时事新闻话题,不仅超出了技术博客的讨论范围,也与我作为内容创作助手的安全准则和定位不符。我的专长在于撰写技术教程、开发经验、工具测评、学习方法和行业观察…

阅读更多
Windows 11 快速设置与通知中心详解:读书笔记 1.4.4
2026/7/17 7:02:37

Windows 11 快速设置与通知中心详解:读书笔记 1.4.4

🔥 个人主页: 杨利杰YJlio ❄️ 个人专栏: 《Windows 疑难杂症与工单复盘案例库》 《Sysinternals实战教程》 《WINDOWS教程》 《Windows PowerShell 实战》 《IOS插件分析测试》 《超简单:用Python让Excel飞起来》…

阅读更多
程序员久坐提醒方案:从系统工具到智能脚本
2026/7/17 7:02:37

程序员久坐提醒方案:从系统工具到智能脚本

1. 为什么我们需要久坐提醒?作为一个长期伏案工作的程序员,我深刻理解久坐带来的健康隐患。连续几个小时盯着屏幕不动,不仅会导致腰背酸痛、颈椎僵硬,还可能引发更严重的健康问题。医学研究表明,每30-60分钟起身活动5分…

阅读更多
HarmonyOS7 多行文本输入页实战:TextArea 不只是会用,还要用得顺手
2026/7/17 6:02:37

HarmonyOS7 多行文本输入页实战:TextArea 不只是会用,还要用得顺手

文章目录评论输入最怕边界没处理addReview 负责把输入变成列表数据页面怎么搭起来这里有个小经验完整代码写在最后TextArea 看起来只是一个多行输入框,但真放进业务里,马上就会遇到几个细节:空内容能不能提交、最多允许多少字、聚焦时边框要不…

阅读更多
智慧树刷课插件:5分钟实现自动化学习的智能助手
2026/7/16 21:32:43

智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 智慧树刷课插件是一款专为智慧树在线教育平台设计的Chrome浏…

阅读更多
Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案
2026/7/16 15:03:34

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在GOG或Epic Games Store购买了心仪的游戏…

阅读更多
办公自动化实战:5个免费工具构建合同处理流水线
2026/7/16 22:47:50

办公自动化实战:5个免费工具构建合同处理流水线

1. 这不是“又一个工具包”,而是一套经过237次真实场景验证的效率组合拳“2026.04.28实用教程工具分享”这个标题乍看平平无奇,像极了你邮箱里被自动归入“促销/订阅”文件夹的那类通知——但如果你真把它当普通更新忽略,接下来半年里&#x…

阅读更多
2026全国外贸独立站搭建公司推荐排行,含零代码SAAS、AI编程、源码定制
2026/7/17 0:02:36

2026全国外贸独立站搭建公司推荐排行,含零代码SAAS、AI编程、源码定制

2026全国外贸独立站搭建公司推荐排行 外贸工厂、工贸企业建设官网,核心需求与普通展示型网站并不相同。除了页面整洁、多语言适配和海外访问体验,企业还要重点考虑数据能否导出、站点能否迁移、源码是否可控、后续费用是否透明,以及更换服务…

阅读更多
HarmonyOS 应用开发《掌上英语》第18篇:Grid 布局实战——从功能 5 宫格到练习 2×2 模式
2026/7/17 0:02:36

HarmonyOS 应用开发《掌上英语》第18篇:Grid 布局实战——从功能 5 宫格到练习 2×2 模式

Grid 布局实战——从功能 5 宫格到练习 22 模式引言 Grid 布局是 ArkTS 中最强大的布局容器之一,它通过行列模板系统实现灵活的多列多行布局。在本英语学习 App 中,Grid 布局贯穿了首页的多个核心模块:功能栏 5 宫格、练习模式 22 卡片、以及…

阅读更多
HarmonyOS 应用开发《掌上英语》第19篇:3D 翻转动画实现——ArkTS 动画系统全解析
2026/7/17 0:02:36

HarmonyOS 应用开发《掌上英语》第19篇:3D 翻转动画实现——ArkTS 动画系统全解析

3D 翻转动画实现——ArkTS 动画系统全解析引言 在移动应用中,卡片翻转动画是最受欢迎的交互动效之一,它能给用户带来直观的"物理世界"操作感。在我们的英语学习 App 的单词学习页面(CourseHomePage.ets)中,就…

阅读更多
基于Dify与DeepSeek构建私有知识库问答系统实战指南
2026/7/17 5:10:40

基于Dify与DeepSeek构建私有知识库问答系统实战指南

在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…

阅读更多
FAE放射组学分析工具:医学影像特征探索的完整解决方案
2026/7/17 5:34:11

FAE放射组学分析工具:医学影像特征探索的完整解决方案

FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE 你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…

阅读更多
DesktopNaotu:你的终极离线思维导图解决方案,告别网络依赖!
2026/7/14 16:39:14

DesktopNaotu:你的终极离线思维导图解决方案,告别网络依赖!

DesktopNaotu:你的终极离线思维导图解决方案,告别网络依赖! 【免费下载链接】DesktopNaotu 桌面版脑图 (百度脑图离线版,思维导图) 跨平台支持 Windows/Linux/Mac OS. (A cross-platform multilingual Mind Map Tool) 项目地址:…

阅读更多