如何取消TabContent在滚动的过程中,过渡阶段仍然显示当前界面的数据

如何取消TabContent在滚动的过程中,过渡阶段仍然显示当前界面的数据。

HarmonyOS
2024-09-23 11:36:43
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zbw_apple

Tabs里的TabContent实际为同一个对象,而这个对象的数据又由页签值Index控制,导致出现了页签切换完成后数据才变化的情况,建议在构建tabs时使用不同的对象作为TabContent,参考以下写法:

@Entry  
@Component  
export struct SplashPage {  
  @StorageProp('currentBreakpoint') currentBreakpoint: string = 'sm';  
  private titles = ['1', '2', '3']  
  @State currentIndex: number = 0  
  @State datas: Array<Array<string>> = [['A1', "B1", 'C1', 'D1'],['A2', "B2", 'C2', 'D2'],['A3', "B3", 'C3', 'D3']]  
  private controller: TabsController = new TabsController()  
  
  build() {  
    Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center }) {  
      Column() {  
        Tabs({ barPosition: BarPosition.Start, controller: this.controller }) {  
          ForEach(this.titles, (item: string, index: number) => {  
            TabContent() {  
              List() {  
                ForEach(this.datas[Number(item)-1], (item: string) => {  
                  ListItem(){  
                    Text(item).fontSize(20).height(45).width('100%')  
                  }  
                })  
              }.width('100%').height('100%').border({ color: '#F5F5F5', width: 1 })  
            }  
          })  
        }  
        .vertical(false)  
        .animationDuration(300)  
        .onChange((index: number) => {  
          this.currentIndex = index  
        })  
      }.width('100%').height('100%')  
      .layoutWeight(1)  
    }  
    .height('100%')  
    .width('100%')  
    .backgroundColor(Color.Green)  
  }  
}
分享
微博
QQ
微信
回复
2024-09-23 18:00:26
相关问题
HAP编译过程中,本地依赖tgz
832浏览 • 1回复 待解决
mysql存储过程中处理多条数据
2016浏览 • 1回复 待解决
HarmonyOS 动画过程中UI残留
37浏览 • 1回复 待解决
如何处理语音识别过程中错误?
209浏览 • 0回复 待解决
Lite Wearable 开发过程中疑问
10895浏览 • 2回复 待解决
录制过程中HarmonyOS如何切换摄像头
435浏览 • 1回复 待解决