文章目录前言应用场景设计思路实现过程预填数据的状态管理头像区域带预填值的输入框保存按钮完整代码效果调优检测是否有修改离开页面的确认写在最后前言个人信息编辑页跟注册表单最大的区别是什么预填数据。用户打开这个页面时输入框里已经有内容了——他的名字、简介、地址都是之前填过的。所以这个页面的核心挑战不是怎么让用户填而是怎么让用户改。今天来实现一个完整的个人信息编辑页包含头像区域、五个文本字段和保存按钮。应用场景个人信息编辑页在各种 App 中都很常见社交 App 的个人资料企业内部系统的员工档案电商平台的收货信息管理内容平台的创作者资料设计思路页面分为三个区域头像区— 圆形头像 点击更换提示信息区— 五个带预填值的输入框操作区— 保存按钮信息区的字段| 字段 | 预填值 | 说明 ||------|-------|------|| 显示名称 | 张三 | 用户昵称 || 个人简介 | 前端开发工程师 | 一句话介绍 || 所在地 | 北京 | 城市/地区 || 公司 | 某某科技有限公司 | 工作单位 || 个人网站 | https://example.com | 外部链接 |实现过程预填数据的状态管理StateshowName:string张三Statebio:string前端开发工程师Statelocation:string北京Statecompany:string某某科技有限公司Statewebsite:stringhttps://example.com状态变量的初始值就是预填数据。实际项目中这些数据通常从接口获取在aboutToAppear生命周期里赋值。头像区域Column(){Text(头像).fontSize(13).fontColor(#999999).margin({bottom:8})Circle({width:64,height:64}).fill(#E0E0E0).margin({bottom:4})Text(点击更换头像).fontSize(11).fontColor(#4D96FF)}.width(100%).alignItems(HorizontalAlign.Center).margin({bottom:20})头像用了Circle组件画一个灰色圆形占位。下面的点击更换头像用主题色暗示可交互。实际项目中可以在Circle上叠加Image组件显示真实头像点击时调用系统相册选择图片。带预填值的输入框Column(){Text(显示名称).fontSize(13).fontColor(#999999).margin({bottom:6})TextInput({text:this.showName}).width(100%).height(42).backgroundColor(#F8F8F8).borderRadius(8).padding({left:12}).onChange((v:string){this.showNamev})}.margin({bottom:14})关键点是TextInput({ text: this.showName })——text参数传入了预填值输入框会直接显示张三。用户修改时onChange回调更新状态变量。五个输入框的写法完全一样只是绑定的状态变量不同。保存按钮Button(保存修改).width(100%).height(48).backgroundColor(#4D96FF).borderRadius(24).fontColor(#FFFFFF).fontSize(16).onClick((){AlertDialog.show({title:保存成功,message:个人信息已更新,confirm:{value:确定,action:(){}}})})保存按钮的回调里实际项目应该调接口提交数据。完整代码EntryComponentstruct ProfileEditForm{StateshowName:string张三Statebio:string前端开发工程师Statelocation:string北京Statecompany:string某某科技有限公司Statewebsite:stringhttps://example.combuild(){Column(){Scroll(){Column(){Text(个人信息).fontSize(20).fontWeight(FontWeight.Bold).fontColor(#333333).margin({bottom:24})// 头像Column(){Text(头像).fontSize(13).fontColor(#999999).margin({bottom:8})Circle({width:64,height:64}).fill(#E0E0E0).margin({bottom:4})Text(点击更换头像).fontSize(11).fontColor(#4D96FF)}.width(100%).alignItems(HorizontalAlign.Center).margin({bottom:20})// 字段Column(){Text(显示名称).fontSize(13).fontColor(#999999).margin({bottom:6})TextInput({text:this.showName}).width(100%).height(42).backgroundColor(#F8F8F8).borderRadius(8).padding({left:12}).onChange((v:string){this.showNamev})}.margin({bottom:14})Column(){Text(个人简介).fontSize(13).fontColor(#999999).margin({bottom:6})TextInput({text:this.bio}).width(100%).height(42).backgroundColor(#F8F8F8).borderRadius(8).padding({left:12}).onChange((v:string){this.biov})}.margin({bottom:14})Column(){Text(所在地).fontSize(13).fontColor(#999999).margin({bottom:6})TextInput({text:this.location}).width(100%).height(42).backgroundColor(#F8F8F8).borderRadius(8).padding({left:12}).onChange((v:string){this.locationv})}.margin({bottom:14})Column(){Text(公司).fontSize(13).fontColor(#999999).margin({bottom:6})TextInput({text:this.company}).width(100%).height(42).backgroundColor(#F8F8F8).borderRadius(8).padding({left:12}).onChange((v:string){this.companyv})}.margin({bottom:14})Column(){Text(个人网站).fontSize(13).fontColor(#999999).margin({bottom:6})TextInput({text:this.website}).width(100%).height(42).backgroundColor(#F8F8F8).borderRadius(8).padding({left:12}).onChange((v:string){this.websitev})}.margin({bottom:24})Button(保存修改).width(100%).height(48).backgroundColor(#4D96FF).borderRadius(24).fontColor(#FFFFFF).fontSize(16).onClick((){AlertDialog.show({title:保存成功,message:个人信息已更新,confirm:{value:确定,action:(){}}})})}.width(100%)}.width(100%).padding(24).backgroundColor(#FFFFFF).borderRadius(16)}.width(100%).height(100%).backgroundColor(#F5F6FA).padding(16)}}效果调优检测是否有修改用户什么都没改就点保存没必要调接口。可以做一个脏检查StateoriginalData:stringaboutToAppear(){this.originalDataJSON.stringify({name:this.showName,bio:this.bio,location:this.location,company:this.company,website:this.website})}isDirty():boolean{constcurrentJSON.stringify({name:this.showName,bio:this.bio,location:this.location,company:this.company,website:this.website})returncurrent!this.originalData}保存按钮根据isDirty()的结果来决定是否启用。离开页面的确认如果用户有未保存的修改就点返回弹一个确认框onBackPress():boolean{if(this.isDirty()){AlertDialog.show({title:未保存的修改,message:确定要放弃编辑吗,confirm:{value:放弃,action:(){router.back()}},cancel:(){}})returntrue// 阻止默认返回}returnfalse}写在最后个人信息编辑页的核心是预填 修改 保存。跟注册表单不同的是你需要关注数据从哪里来接口加载、怎么判断有没有修改脏检查、离开时是否需要提醒未保存确认。把这些细节做好了你的个人信息编辑页就从一个能用的表单升级成了一个好用的编辑体验。
企业数字化 ERP 产品动态
相关推荐
如何安全修改暗黑破坏神II存档:终极角色编辑器使用指南 如何安全修改暗黑破坏神II存档:终极角色编辑器使用指南 【免费下载链接】diablo_edit Diablo II Character editor. 项目地址: https://gitcode.com/gh_mirrors/di/diablo_edit
你是否厌倦了在暗黑破坏神II中重复刷怪只为获得一件心仪的装备?或者… · 2026/11/15 19:03:05
8大网盘直链下载助手完整指南:告别限速,高效获取真实下载地址 8大网盘直链下载助手完整指南:告别限速,高效获取真实下载地址 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中… · 2026/11/15 19:03:05
LRCGET:3步掌握批量歌词同步,彻底解决离线音乐库歌词难题 LRCGET:3步掌握批量歌词同步,彻底解决离线音乐库歌词难题 【免费下载链接】lrcget Utility for mass-downloading LRC synced lyrics for your offline music library. 项目地址: https://gitcode.com/gh_mirrors/lr/lrcget
LRCGET是一款专为本地… · 2026/10/30 9:59:40
青浦电工证复审地址在哪?内部消息帮你理清外省证书转过来的细节 青浦电工证复审地址在哪?内部消息帮你理清外省证书转过来的细节 之前考的证在外省能不能转过来?这是很多电工朋友最关心的问题,特别是像河南的建筑工人,经常在外地施工,证件管理就成了头等大事。 青浦电工证复审地址… · 2026/11/15 19:02:48
电工作业的风险分析值不值得考良心建议 电工作业的风险分析值不值得考良心建议 证书过期了不知道怎么复审延期?电工作业的风险分析值不值得考?这几乎是每个特种作业从业者都会遇到的问题。别急,今天我就从 郑州培训机构学员 的角度,聊聊电工作业的真实风险,以及 证书变更、注销、复审… · 2026/11/15 19:02:48
电工证考试完多久查到怎么报名最靠谱 电工证考试完多久查到怎么报名最靠谱 不知道去哪报名怕被中介坑?电工证考试完多久查到证,怎么报名才不被坑?别急,老电工给你讲清楚,省心又省钱! 电工证考试完多久查到证 电工证考试完多久查到证,这是很多考生最关心的问题之一。根据… · 2026/11/15 19:02:48
物业电工作业证书值不值得考?学历不高怕报不上名?看完这篇你就懂了 物业电工作业证书值不值得考?学历不高怕报不上名?看完这篇你就懂了 学历不高怕报不上名,这几乎是所有想考【物业电工作业证书】的人心里的担忧。其实,很多人在从事物业电工工作时,虽然手里有电工证,但面对一些复杂设备或突发情况,往往无从下手。更关键… · 2026/11/15 19:02:48
电工证考试 年龄要求千万别踩坑,工地太忙怎么复习也不怕 电工证考试 年龄要求千万别踩坑,工地太忙怎么复习也不怕 工地太忙根本没时间复习考试,这事儿咱们电工圈里谁没经历过?特别是刚拿到电工证的朋友,一边要跑现场,一边还得抽空准备考试,心里头直打鼓。 千万别踩坑 ,今天咱们就从 电工证考试… · 2026/11/15 19:02:48
物业电工证考取流程图通过率揭秘:别再交了冤枉培训费 物业电工证考取流程图通过率揭秘:别再交了冤枉培训费 怕考不过白交培训费?物业电工证考取流程图你得先搞懂,不然真容易被坑!最近不少学员吐槽,花了几千块报了培训班,结果考试还是挂了,钱打了水漂。别急,今天就把【物业电工证考取流程图】和【通过率揭… · 2026/11/15 19:01:48
长春初级电工证怎么考?通过率揭秘全在这里 长春初级电工证怎么考?通过率揭秘全在这里 之前考的证在外省能不能转过来?这几乎是每个想从事电工工作的人都会问的问题。特别是那些在外地打拼多年、手里握着一张“外地电工证”的人,到了长春想继续干这一行,第一反应就是“我的证能用吗?”。今天我们就… · 2026/11/15 0:00:50
国内电工证报考条件与考试时间 低压电工证怎么考?学历不高也能报名,官方报名入口全在这 你是不是经常听说“电工证是入行门槛”,但又担心自己学历不够、经验不足,根本报不了名?别急,今天就带你从零了解【国内电工证】的报考流程、考试内容,还有怎么在 官方报名入口… · 2026/11/15 0:00:50
电工作业时如何断电?电子证书到底能不能全国通用? 电工作业时如何断电?电子证书到底能不能全国通用? 实操考试心里没底怕挂科,特别是电工作业时如何断电这一操作,不仅关系到你能不能拿到证书,更关系到以后能不能顺利上岗。很多人觉得这不过就是“断个电”,但其实这里面的门道可不少,稍有不慎就可能出错… · 2026/11/15 0:00:50
长春初级电工证怎么考?通过率揭秘全在这里 长春初级电工证怎么考?通过率揭秘全在这里 之前考的证在外省能不能转过来?这几乎是每个想从事电工工作的人都会问的问题。特别是那些在外地打拼多年、手里握着一张“外地电工证”的人,到了长春想继续干这一行,第一反应就是“我的证能用吗?”。今天我们就… · 2026/11/15 0:00:50
国内电工证报考条件与考试时间 低压电工证怎么考?学历不高也能报名,官方报名入口全在这 你是不是经常听说“电工证是入行门槛”,但又担心自己学历不够、经验不足,根本报不了名?别急,今天就带你从零了解【国内电工证】的报考流程、考试内容,还有怎么在 官方报名入口… · 2026/11/15 0:00:50
电工作业时如何断电?电子证书到底能不能全国通用? 电工作业时如何断电?电子证书到底能不能全国通用? 实操考试心里没底怕挂科,特别是电工作业时如何断电这一操作,不仅关系到你能不能拿到证书,更关系到以后能不能顺利上岗。很多人觉得这不过就是“断个电”,但其实这里面的门道可不少,稍有不慎就可能出错… · 2026/11/15 0:00:50
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/15 1:51:20
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/15 4:02:19
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/15 3:02:05