参考文档:https://gitee.com/openharmony/docs/blob/5654c2b940ab3e2f4f0baf435e630c4ef3536428/zh-cn/application-dev/reference/arkui-ts/ts-universal-attributes-component-id.md
获取组件信息
-
getInspectorByKey(id: string): string
获取指定id的组件的所有属性,不包括子组件信息。
-
getInspectorTree(): string
获取组件树的所有属性,包括子组件信息。
getInspectorByKey与getInspectorTree方法可以使用,但在IDE会显示报错,建议@ts-ignore忽略错误
这里我提供两个方法,来帮助我们更好在Log里面查看组件信息
//打印
log(data, level, parentName, componentId) {
for (let k in data) {
let obj = data[k]
// 其他数据类型
if (typeof obj == 'string' || typeof obj == 'number' || typeof obj == 'boolean') {
console.info(`[${componentId}][${parentName}]【${k}】 ===> ${obj.toString()}`)
continue
}
//空对象
if (!Object.keys(obj).length) {
console.info(`[${componentId}][${parentName}]【${k}】 ===> ${JSON.stringify(obj)}`)
continue
}
//object
this.log(obj, level + 1, `${parentName}->${k}`, componentId)
}
}
// 打印组件信息
logComponent(componentId: string) {
// @ts-ignore
let str = getInspectorByKey(componentId)
try {
let data = JSON.parse(str)
this.log(data, 0, 'root', componentId)
} catch (e) {
console.log('无法找到组件')
}
}
// 打印组件树信息
logComponentTree() {
// @ts-ignore
let str = getInspectorTree()
try {
let data = JSON.parse(str)
this.log(data, 0, 'root', 'tree')
} catch (e) {
console.log('获取组件树失败')
}
}
查看组件
Text('组件标识发送事件演示')
.fontSize(30)
.margin({ bottom: 30 })
.id('testComponent')
.onAppear(() => {
this.logComponent('testComponent')
})
Text('组件标识发送事件演示')
.fontSize(30)
.margin({ bottom: 30 })
.id('testComponent')
.onAppear(() => {
this.logComponentTree()
})