DevEco Studio @Preview 无法预览

DevEco Studio @Preview 无法预览 报错:There are properties not initialized. For details about the properties, see (mine/src/main/ets/pages/SetPage0.ets:14:3). For more information about the solution, see FAQs.

很简单一个布局,在模拟器上是运行是没问题, 就是studio中的预览不好使, 在官网上找的相关的都是引用方面缺失的, 我这块代码页没有啥用到啥组件啊, 都是基本组件, 这块怎么解决???

相关代码

import { HdsNavDestination, HdsNavDestinationAttribute } from "@hms.hds.hdsBaseComponent"


@Builder
export function SetPage0Builder() {
  SetPage0()
}

[@Preview](/user/Preview)
@ComponentV2
export struct SetPage0 {


  build() {

    HdsNavDestination(){

    }.width('100%').height('100%').backgroundColor(Color.Red)

  }
}

12 回复

UI Design Kit(UI设计套件)是华为提供的符合华为HarmonyOS Design System定义的UI界面开发套件集合,包含HarmonyOS Design System设计定义的扩展UI组件及其多样化的组件样式、丰富多样的UI界面场景下的光影效果,支撑应用实现跟随HarmonyOS Design System高端精致设计效果UI界面,达成应用界面与华为HarmonyOS多设备UI设计风格完美融合。

HdsNavDestination是UI Design Kit(UI设计套件)中的组件,预览器只支持官方基本组件。具体如下:

支持使用预览器的ArkTS组件清单

组件 API
基础组件 AlphabetIndexer
Blank
Button
Checkbox
CheckboxGroup
DataPanel
DatePicker
Divider
Gauge
Image
ImageAnimator
ImageSpan
LoadingProgress
Marquee
Menu
MenuItem
MenuItemGroup
Navigation
NavRouter
NavDestination
PatternLock
Progress
QRCode
Radio
Rating
ScrollBar
Search
Select
Slider
Span
Stepper
StepperItem
Text
TextArea
TextClock
TextInput
TextPicker
TextTimer
Toggle
容器组件 Badge
Column
ColumnSplit
Counter
Flex
FlowItem
GridCol
GridRow
List
ListItem
ListItemGroup
Navigator
Panel
Refresh
RelativeContainer
Row
RowSplit
Scroll
SideBarContainer
Stack
Swiper
Tabs
TabContent
WaterFlow
绘制组件 Circle
Ellipse
Line
Polyline
Path
Rect
Shape
画布组件 Canvas
CanvasGradient
CanvasPattern
CanvasRenderingContext2D
ImageBitmap
ImageData
Matrix2D
OffscreenCanvasRenderingContext2D
Path2D

是这个组件 HdsNavDestination 不支持预览吧。。。

好像是,其他组件是好使的. 但是不应该啊, 这个不是官方推荐的路由子组件么,

嗯,搞的久了你就会发现还有好多写法是不支持在模拟器上使用的,例如 @Provide('pathStack') pathStack: NavPathStack = new NavPathStack(); 这么写就不行。 建议只追求在预览器里写最简单的组件和页面,其它的逻辑就算了,预览不了。。。,

HdsNavDestination API18以上的组件吧

HdsNavigation和 HdsNavDestination 预览器暂不支持。

部分API、组件、资源不支持预览:

  • 预览场景下,不支持通过相对路径及绝对路径的方式访问resources目录下的文件。
  • 预览不支持组件拖拽。
  • 部分API不支持预览,如Ability、App、MultiMedia等模块。
  • Richtext、Web、Video、XComponent组件不支持预览。
  • 不支持调用C++库的预览。

1、预览器支持情况 2、使用预览器调试应用 3、预览器支持的API清单

你用的是6版本的特性,应该暂时不支持,或者你升级一下你的deveco的版本到6然后试试

deveco版本是6以上了, 应该如4楼说的吧, 现在还支持基础组件的预览, 希望以后能优化吧, 毕竟是官方强推的组件还不支持预览有点说不过去了,

@hms.hds.hdsBaseComponent
1.这个库我在 https://ohpm.openharmony.cn/#/cn/home 里面没有找到
2.官方推荐的路由组件是 Navigation(根组件)、NavDestination(子组件)

3.你可以尝试使用 @Entry 试试

DevEco Studio 预览器的能力和真机不完全一致,部分功能相比真机能力要差一点,有些组件预览会出问题,实践开发中建议以真机效果为准,如果没有真机一般就需要以模拟器为准

DevEco Studio的@Preview预览失败通常由以下原因导致:

  1. 预览器未正确启动或设备连接异常;
  2. 项目编译错误或资源文件缺失;
  3. 预览组件代码存在语法问题;
  4. DevEco Studio版本与SDK不兼容。 请检查预览器状态、项目构建日志及代码规范性。

这个报错明确指出在 SetPage0.ets 文件的第14行第3列有属性未初始化。从你提供的代码看,问题出在 HdsNavDestination 组件上。

HdsNavDestination 是 HDS(HarmonyOS Design System)导航组件,它有一个必需的属性 attribute 没有在你的代码中初始化。该属性用于配置导航目的地的基本信息。

解决方案:

在你的 HdsNavDestination() 组件中,必须提供 attribute 属性的值。修改你的 build 函数如下:

build() {
  HdsNavDestination({
    attribute: new HdsNavDestinationAttribute({
      // 至少需要配置 title 属性
      title: '页面标题' // 请替换为你的实际页面标题
      // 还可以根据需要配置其他属性,如 icon, id 等
    })
  })
  .width('100%')
  .height('100%')
  .backgroundColor(Color.Red)
}

关键点说明:

  1. HdsNavDestinationAttributeHdsNavDestination 的必需参数,其中 title 属性通常是必须的。
  2. 预览器(@Preview)对组件属性的完整性检查比运行时更严格。模拟器能运行是因为某些属性可能有默认值或运行时处理机制,但预览器要求显式初始化所有必需属性。
  3. 对于 HDS 组件,请确保查阅对应组件的 API 文档,了解所有必需属性。

修改后,保存文件,预览功能应该就能正常工作了。

回到顶部