TagManagePage:CRUD 标签管理 + 编辑模式

前言

"海风日记"的标签管理页面支持标签的增删改查,通过编辑模式切换标签列表的显示和操作状态。

本文将从 TagManagePage.ets 源码出发,深入讲解标签管理的 CRUD 实现。


一、标签管理状态

typescript 复制代码
@Entry
@Component
struct TagManagePage {
  @State tags: string[] = ['海边', '美食', '旅行', '读书', '工作', '运动', '朋友', '家人']
  @State newTag: string = ''
  @State editing: boolean = false
}

二、编辑模式切换

typescript 复制代码
Button(this.editing ? '完成' : '编辑')
  .height(32).fontSize(14).fontColor(COLOR_AMBER)
  .backgroundColor('rgba(200,149,106,0.10)').borderRadius(16)
  .padding({ left: 12, right: 12 })
  .onClick(() => { this.editing = !this.editing })

三、标签删除

typescript 复制代码
if (this.editing) {
  Button() {
    SymbolGlyph($r('sys.symbol.minus_circle'))
      .fontSize(18).fontColor(['#D06060'])
  }
  .backgroundColor('transparent').width(36).height(36)
  .onClick(() => {
    this.tags.splice(idx, 1)
    this.tags = [...this.tags]  // 触发 UI 更新
  })
}

四、标签新增

typescript 复制代码
Row({ space: 10 }) {
  TextInput({ placeholder: '添加新标签...', text: this.newTag })
    .layoutWeight(1).height(44).fontSize(14)
    .placeholderColor(COLOR_TEXT_HINT).backgroundColor('#FFFFFF')
    .borderRadius(CARD_RADIUS)
    .border({ width: 1, color: 'rgba(200,180,140,0.20)' })
    .padding({ left: 12, right: 12 })
    .onChange((v) => { this.newTag = v })

  Button('添加')
    .height(44).fontSize(14).fontColor('#FFFFFF').fontWeight(FontWeight.Bold)
    .backgroundColor(COLOR_PRIMARY).borderRadius(CARD_RADIUS)
    .padding({ left: 16, right: 16 })
    .onClick(() => {
      if (this.newTag.trim().length > 0) {
        this.tags = [...this.tags, this.newTag.trim()]
        this.newTag = ''
      }
    })
}

五、CRUD 操作总结

操作 方法 触发 UI 更新
新增 this.tags = [...this.tags, newTag] 创建新数组
删除 splice + this.tags = [...this.tags] 创建新数组
更新 直接修改后 this.tags = [...this.tags] 创建新数组

六、总结

本文通过"海风日记"的标签管理页面,深入讲解了 CRUD 标签管理的实现:

  1. 编辑模式:切换编辑状态
  2. 标签删除:编辑模式显示删除按钮
  3. 标签新增:输入框 + 添加按钮
  4. UI 更新:创建新数组触发渲染

下一篇文章开始进入 第九系列:登录与账号体系,敬请期待。

如果这篇文章对你有帮助,欢迎点赞👍、收藏⭐、关注🔔,你的支持是我持续创作的动力!


相关资源:

相关推荐
学长毕业设计2 小时前
基于SpringBoot的公益基金管理系统(源码+文档+讲解视频)
java·spring boot·后端
东小西2 小时前
【SAA实战】第 3 篇 · 工具调用全攻略:把业务能力交给 Agent 自己调度
java·后端·spring
东小西2 小时前
【SAA实战】第 4 篇 · Agent 短期记忆:saver 让 Agent 跨轮记得住(threadId 隔离)
java·后端·spring
阿kun要赚马内3 小时前
MySQL 索引基础
后端·mysql
码事漫谈3 小时前
我啥都能做,却不知道做什么了
后端
geovindu3 小时前
CSharp: 万年历
开发语言·后端·c#·.net
独泪了无痕5 小时前
SpringBoot Event事件机制,轻松实现业务解耦
spring boot·后端·spring
悲且狂6 小时前
SpringBoot项目改造注意事项(旧项目框架复用)
java·spring boot·后端
敲代码的嘎仔6 小时前
28届后端开发-海康威视日常实习一面(已OC)
java·开发语言·后端·面试·海康威视·实习·大厂
IT_陈寒7 小时前
JavaScript数组排序踩的坑,差点让我加班到凌晨
前端·人工智能·后端