HarmonyOS 使用PersistentStorage持久化用户信息无效

在首页通过@StorageLink(‘userInfoTest’) userInfoTest: string = ''获取,获不到,返回undefind。是什么原因呢?

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

首先在首页时,在Entry外声明PersistentStorage.persistProp,其次在登录完成设置值时不使用PersistentStorage.persistProp而是使用AppStorage.set来修改值。下面以userInfo为例:

PersistentStorage.persistProp('userInfo',"111") //可以直接放在import代码下方,此处只以userInfo为例,每一个需要持久化保存的都需要声明
//声明时设置的值可以任意,后续通过set修改,j尽量和目标值保持属性一致
@Entry
@Component
struct Index {
  build() {
    Column(){
      Button("点击测试").onClick(()=>{
        console.log("测试set")
        AppStorage.set('userInfo', "ceshi") //直接使用AppStorage.set,而非PersistentStorage.persistProp,否则将无法修改
      })
      Button("查找userInfo").onClick(()=>{
        const ut = AppStorage.get<string>('userInfo')
        console.log(ut); //测试结果显示userInfo中存的值变成了"ceshi",杀进程,重新进入后直接点击button,log的结果依旧是"ceshi",实现持久化存储
      })
    }
  }
}

1.想要持久化保存的变量必须在项目主页声明,要在各个组件以及Entry的外部,可以直接放在import语句下方,每一个都需要声明。不做此项操作将无法持久化保存数据。2.修改数据使用AppStorage.set,而非PersistentStorage.persistProp。因为PersistentStorage.persistProp在key已经存在的前提下不会修改value。

分享
微博
QQ
微信
回复
2天前
相关问题
PersistentStorage持久化存储问题
568浏览 • 0回复 待解决
PersistentStorage如何持久化一个对象?
2808浏览 • 1回复 待解决
PersistentStorage怎么存进去
1756浏览 • 1回复 待解决