我们某个页面,之前是自己绑定一个LocalStorage,每次进这个页面LocalStorage都是重新new一次
现在改成Navigation之后LocalStorage不会重新new了,导致数据出问题,请问Navigation的情况下,各个页面因为不再是@Entry了,如何保证每次跳这个页面一次都绑定一个新的LocalStorage呢?
试了下面这样写可以,但是LocalNavDemo拿不到传进去这个LocalStorage,用this.getUIContext().getSharedLocalStorage()拿出来是空,请问这种方式传进去的LocalStorage如何拿到?
function initStorage():LocalStorage{
let storage = new LocalStorage()
storage.setOrCreate("KEY",Math.random()*1000)
return storage
}
@Builder
export function LocalNavDemoBuilder(){
LocalNavDemo({},initStorage())
}
@Component
export struct LocalNavDemo{
@LocalStorageProp("KEY") localKey:number = 0
@Consume pageStack: NavPathStack
aboutToAppear(): void {
let storage = this.getUIContext().getSharedLocalStorage()
let key = storage?.get("KEY") as number
console.log(key?.toString())
}
build() {
NavDestination(){
Text(`key:${this.localKey}`)
}
}
}
通过构造函数传递LocalStorage不能拿到实例, 可以创建全局map存LocalStorage, 再在对应的页面获取使用