HarmonyOS 鸿蒙Next DevEco Studio 4.0 release和3.1的报错信息不一致问题
HarmonyOS 鸿蒙Next DevEco Studio 4.0 release和3.1的报错信息不一致问题
问题背景
我想尝试安装DevEco Studio 4.0 release。安装包来源于gitee上的ArkUI-X。
起因
我们知道:ArkUI要求,父组件向子组件传递参数时,发生了“父组件里已经设置过了@state装饰的属性,现在传递给子组件的@State装饰的属性”的情况,此时IDE本应该发生报错(在代码下方产生红色波浪线)。但,DevEco Studio 3.1和4.0的报错情况不一致。
同时,也参考了B站上黑马程序员的介绍视频——P17《16.ArkUI-状态管理-@Prop@Link@Provide@Consume》的05:51的位置。它们的IDE 3.1也在这里报错。而DevEco Studio 4.0居然不报错
IDE相关截图
注意观察代码第第60行,完整的参考代码见文末
对比分析一下DevEco Studio 3.1的情况
这里确实会报错!
我的疑问
所以,按HarmonyOS应用未来的发展来看,到底应该以谁为准?
示例代码
class Task {
static id: number = 1
// 任务名称
name: string = `任务${Task.id++}`
// 任务状态:是否完成
finished: boolean = false
}
// 统一卡片样式
@Styles
function filling_Cards() {
.width('95%')
.padding(20)
.backgroundColor(Color.White)
.borderRadius(15)
.shadow({
radius: 6,
color: '#1F000000',
offsetX: 2,
offsetY: 4
})
}
// 统一完成样式
@Extend(Text)
function finished_Task() {
.decoration({ type: TextDecorationType.LineThrough })
.fontColor('#B1B2B1')
}
@Entry
@Component
struct Prop_Decorator {
// 总任务数量
[@State](/user/State) totalTask: number = 0
// 已完成的任务数量
[@State](/user/State) finishedTask: number = 0
// 任务数组
[@State](/user/State) tasks: Task[] = []
handleTaskChange(val: number) {
if (val == 1) {
// 修改任务总数计数器——通过测量数组长度精确判定
this.totalTask = this.tasks.length
} else if (val == 2) {
// 更新已完成任务计数器的值
this.finishedTask = this.tasks.filter(item => item.finished).length
} else {
this.totalTask = this.tasks.length
this.finishedTask = this.tasks.filter(item => item.finished).length
}
}
build() {
Column({ space: 10 }) {
// 1. 任务进度卡片
Task_Statistics({finishedTask: this.finishedTask})
// 2. 新增任务的按钮
Button('新增任务')
.onClick((event: ClickEvent) => {
// 向任务数组新增数组元素
this.tasks.push(new Task())
// 修改任务总数计数器
this.handleTaskChange(1)
})
.width(200)
// 3. 任务列表
List({ space: 10 }) {
ForEach(
this.tasks,
(item: Task, index) => {
ListItem() {
Row() {
Text(item.name)
.fontSize(20)
Checkbox()
.select(item.finished)
.onChange(val => {
// 更新当前任务的状态
item.finished = val
// 更新已完成任务计数器的值
this.handleTaskChange(2)
})
}
.filling_Cards()
.justifyContent(FlexAlign.SpaceBetween)
}
.swipeAction({ end: this.deleteButton(index) })
}
)
}
.width('100%')
.alignListItem(ListItemAlign.Center)
.layoutWeight(1)
}
.width('100%')
.height('100%')
.backgroundColor('#F1F2F3')
}
@Builder
deleteButton(index: number) {
Button() {
Image($r('app.media.ic_public_delete_filled'))
.fillColor(Color.White)
.width(25)
}
.margin({ left: 5 })
.padding(10)
.type(ButtonType.Circle)
.backgroundColor(Color.Red)
.onClick(() => {
this.tasks.splice(index, 1)
this.handleTaskChange(3)
})
}
}
@Component
struct Task_Statistics {
[@State](/user/State) finishedTask: number = 0
[@State](/user/State) totalTask: number = 0
build() {
Row() {
Text('任务进度:')
.fontSize(30)
.fontWeight(FontWeight.Bold)
// Stack——堆叠容器
Stack() {
Progress({
value: this.finishedTask,
total: this.totalTask,
type: ProgressType.Ring
})
.width(100)
Row() {
Text(this.finishedTask.toString())
.fontSize(24)
.fontColor('#F36D')
Text(' / ' + this.totalTask.toString())
.fontSize(24)
}
}
}
.filling_Cards()
.margin({ top: 20, bottom: 10 })
.justifyContent(FlexAlign.SpaceEvenly)
}
}
更多关于HarmonyOS 鸿蒙Next DevEco Studio 4.0 release和3.1的报错信息不一致问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html
以最新版本为主,现在是以next版本
更多关于HarmonyOS 鸿蒙Next DevEco Studio 4.0 release和3.1的报错信息不一致问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
高版本,现在大厂好像都是api11了
在HarmonyOS鸿蒙Next的DevEco Studio 4.0版本中,报错信息与3.1版本不一致,主要是由于4.0版本对错误处理机制和提示信息进行了优化和升级。4.0版本引入了更详细的错误分类和更精准的错误定位,帮助开发者更快地识别和解决问题。例如,3.1版本可能只提供简单的错误描述,而4.0版本会提供具体的错误类型、发生位置以及可能的解决方案。此外,4.0版本对某些特定场景下的错误处理逻辑进行了调整,可能导致相同代码在不同版本中报错信息不同。建议开发者根据4.0版本的报错信息调整代码逻辑,确保兼容性。