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 更新:创建新数组触发渲染

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

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


相关资源:

相关推荐
子兮曰20 小时前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰20 小时前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
爱勇宝21 小时前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
胡写代码21 小时前
别再前后端各写一套表单校验了
java·后端
大勇前进1 天前
原生 PHP 还是 Laravel?小项目到底要不要上框架
后端
yuzhi_liu1 天前
我用 LangGraph4j 实现 Multi-Agent Supervisor
后端
alsmile1 天前
Node-RED 之外,国产规则引擎的新方案:基于标准语法,Go 先行实现
后端·开源·go
大白801 天前
PHP 内存溢出排查思路:看懂报错日志,精准定位问题
后端
二月龙1 天前
PHP 接口返回统一响应封装,让前后端对接更省心
后端
盖伦发发1 天前
软件工程SOLID 五大设计原则
后端·软件工程