HarmonyOS 如何使登录成功后强制重绘页面,而不是依赖@state?

如题:HarmonyOS 如何使登录成功后强制重绘页面,而不是依赖@state?

阅读 541
1 个回答

示例参考如下:

//使用AppStorage 模拟首选项存储登录状态
import { router } from '@kit.ArkUI';

PersistentStorage.persistProp('loginStatus', false);

@Entry
@Component
struct Page {
  @State message: string = '未登录,去登陆';
  @State isLogin: boolean = false
  onPageShow(): void {
    //模拟首选项拿数据
    this.isLogin = AppStorage.get('loginStatus') as boolean
    if (this.isLogin) {
      this.message = '已登录'
    }
  }

  build() {

    Column() {
      Button(this.message).onClick(() => {
        router.pushUrl({
          url: 'pages/fxtp/Login'
        })
      })
      List() {
        ListItem() {
          customComponent({
            isLogin: this.isLogin
          })
        }
      }
    }
  }
}

@Component
struct customComponent {
  @Prop isLogin: boolean

  build() {
    Column() {
      Text(this.isLogin ? "已经登录" : "未登录")
    }
  }
}

请求网络接口可以给isLogin添加@Watch,来监听变化处理对应的逻辑。