温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

OpenHarmony菜单如何刷新

发布时间:2026-09-01 05:32:06 来源:亿速云 阅读:102 作者:小樊 栏目:软件技术

在 OpenHarmony(ArkUI,eTS/ArkTS) 中,“菜单刷新”通常指 菜单数据变化后,界面能实时更新。不同场景刷新方式不同,下面按常见情况说明。


一、使用 @State 驱动菜单刷新(最常用)

只要菜单数据用 @State 修饰,数据变化就会自动刷新。

示例:动态菜单

@Entry
@Component
struct MenuPage {
  @State menuItems: string[] = ['首页', '设置']

  build() {
    Column() {
      ForEach(this.menuItems, (item) => {
        Text(item)
          .fontSize(20)
          .margin(10)
      })

      Button('刷新菜单')
        .onClick(() => {
          // 修改数据,自动刷新
          this.menuItems = ['首页', '设置', '关于']
        })
    }
  }
}

✅ 关键点

  • 用 @State
  • 数组要整体重新赋值(this.menuItems = [...])

二、使用 @Link / @Prop 跨组件刷新菜单

父组件

@Entry
@Component
struct Parent {
  @State items: string[] = ['A', 'B']

  build() {
    Child({ items: this.items })
  }
}

子组件

@Component
struct Child {
  @Prop items: string[]

  build() {
    Column() {
      ForEach(this.items, item => Text(item))
    }
  }
}

父组件修改 items,子菜单自动刷新。


三、系统菜单(Menu / ContextMenu)刷新

1️⃣ 弹窗菜单(Menu)

@State showMenu: boolean = false
@State menuList: string[] = ['复制', '粘贴']

Button('菜单')
  .onClick(() => {
    this.showMenu = true
  })
  .bindMenu(this.showMenu, () => {
    ForEach(this.menuList, item => {
      MenuItem(item)
    })
  })

刷新方式:

this.menuList = ['复制', '粘贴', '删除']
this.showMenu = false
this.showMenu = true

2️⃣ 右键菜单(ContextMenu)

Text('长按我')
  .bindContextMenu(() => {
    ForEach(this.menuList, item => {
      MenuItem(item)
    })
  })

⚠️ ContextMenu 每次弹出都会重新执行 builder,数据自动最新


四、Tabs / SideBar 菜单刷新

Tabs 示例

@State tabs: string[] = ['新闻', '视频']

Tabs() {
  ForEach(this.tabs, tab => {
    TabContent() {
      Text(tab)
    }.tabBar(tab)
  })
}
this.tabs = ['新闻', '视频', '直播']

五、常见问题

❌ 菜单不刷新?

原因 解决
没用 @State 加装饰器
只改数组元素 重新赋值数组
用 let / var 用 @State
菜单已弹出 先关闭再打开

六、总结一句话

OpenHarmony 菜单刷新 = 数据用 @State + 数据变化即可自动刷新

如果你用的是 具体组件(Tabs / List / Menu / Navigation),可以告诉我,我给你针对性示例。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手