HarmonyOS 使用PersistentStorage和AppStorage持久化数据后,再次打开应用仍然访问到的是默认数据

HarmonyOS
1天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
superinsect

AppStorage和PersistentStorage做了demo,参考一下:

import router from '@ohos.router';
PersistentStorage.persistProp('token', '')
@Entry
@Component
struct Index {
  @State message: string = '这是登录页';
  private title: string = "手机号登录"
  private backColor: ResourceColor = "#DC143C"
  @StorageLink('token') token: string = ''

  onPageShow() {
    if (this.token.length>0 && this.token !== "undefined"){
      console.log('登录页 onPageShow token有值 说明之前 有登录过 直接跳转到首页' + this.token)
      this.goToHome()
    }else {
      console.log('登录页 onPageShow token没值 说明之前 没登录过')
    }
  }

  build() {
    Stack(){
      Text(this.message + this.token)
        .fontSize(50)
        .fontWeight(FontWeight.Bold)
        .margin({
          top:200
        })

      Button()
        .type(ButtonType.Capsule)
        .width('100%')
        .height('50')
        .backgroundColor(this.backColor)
        .border({
          color:'#CCCCCC',
          width:1
        })
        .margin({
          top:500
        })

      Row(){
        Text(this.title)
          .fontSize(18)
          .fontColor('#333333')
        Text('(上次登录)')
          .fontSize(14)
          .fontColor('#C0C0C0')
      }
      .width('100%')
      .height('100%')
      .justifyContent(FlexAlign.Center)
      .onClick(() =>{
        this.mobilePhoneLoginClick()
      })
      .margin({
        top:500
      })
      //.backgroundColor('#32CD32')
    }
    .width('90%')
    .height('50')
    //.backgroundColor('#00BFFF')
  }

  mobilePhoneLoginClick(){
    console.info('手机号登录 点击')
    this.loginSuccess()
  }
  loginSuccess(){
    let token = 'abc123456'
    console.info('登录成功 存本地的 token:' + token)
    AppStorage.setOrCreate('token',token)
    this.goToHome()
  }

  goToHome(){
    console.info('跳转到 首页')
    router.pushUrl({ url: 'pages/Home' })
  }
}

下面是Home.ets页面:

@Entry
@Component
struct Home {
  @State message: string = '这是首页';
  @State token: string = ''

  onPageShow() {
    this.token = AppStorage.get('token') + ''
    console.info('首页 取存在本地的 temp:' + this.token)
  }
  build() {
    Row() {
      Column() {
        Text(this.message + this.token)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
      }
      .width('100%')
    }
    .height('100%')
  }
}
分享
微博
QQ
微信
回复
1天前
相关问题
关于数据持久使用问题
277浏览 • 1回复 待解决
如何实现应用数据持久存储
2216浏览 • 1回复 待解决
PersistentStorage持久存储问题
592浏览 • 0回复 待解决
数据持久遇到各种问题
243浏览 • 1回复 待解决
如何在IDE每次run项目数据持久
938浏览 • 1回复 待解决
数据持久方式有哪些?
1009浏览 • 1回复 待解决
HarmonyOS 基本类型数据持久
29浏览 • 1回复 待解决