处理 Issue #4 的 MVVM 分层项。采用渐进式、低风险策略:先把业务逻辑从页面抽到 ViewModel 层,页面保留原有 @State 展示状态,渲染行为不变。
@State
ets/viewmodel/
LoginViewModel.ets
LoginData → UserInfo
HomeViewModel.ets
FlashcardViewModel.ets
QuizViewModel.ets
Login.ets
Quiz.ets
import HttpUtil
View (pages) → ViewModel → HttpUtil → 云函数 @State 展示状态 业务逻辑/校验
isLoading
currentIndex
selectedIndex
@Observed
hvigorw assembleHap --mode module -p module=entry -p product=default -p buildMode=debug
说明:验证环境 SDK 为 HarmonyOS 26.0.0,为适配 IDE 临时移除 build-profile.json5 的 compileSdkVersion(24),该临时改动未包含在本 PR。
build-profile.json5
compileSdkVersion(24)
Refs #4
变更说明
处理 Issue #4 的 MVVM 分层项。采用渐进式、低风险策略:先把业务逻辑从页面抽到 ViewModel 层,页面保留原有
@State展示状态,渲染行为不变。新增 ViewModel 层(
ets/viewmodel/)LoginViewModel.etsLoginData → UserInfo转换HomeViewModel.etsFlashcardViewModel.etsQuizViewModel.ets页面瘦身
Login.ets逻辑代码 66 行 → 约 20 行(校验/调用/映射移除)Quiz.ets选项生成与作答逻辑移入 VMimport HttpUtil/ 业务 Model,数据访问统一经 ViewModel分层取舍
isLoading、currentIndex、selectedIndex等)。@Observed状态上提,避免 V1 嵌套观测的运行时风险;后续可在 V2 或逐页迁移时把业务状态进一步上提到 ViewModel。验证
Refs #4