HarmonyOS 鸿蒙Next Preview机制限制太多,很难用起来
HarmonyOS 鸿蒙Next Preview机制限制太多,很难用起来
Preview即时预览机制可以帮助开发者快速了解ui代码效果,也可以帮助开发者快速定位ui代码。当时目前Preview机制的限制太多,只要有任何的异常,就会报错白屏,导致项目复杂了以后,基本没办法用
能否跑预览的时候,优先把ui画出来,对于相关异常进行内部try-catch处理,而不是直接白屏。目前非常多的因素导致白屏和预览不可用
- @Consume、@Link、@Prop等需要父级页面传递参数的页面
- 需要路由传递参数的页面
- aboutToAppear等生命周期调用的一些业务方法,但相关调用无法在预览时初始化,导致报错
虽然通过mock等手段能解决其中部分问题,但是每次发现预览不出,要去看log,解问题,写mock本身链路就比较长。一旦遇到复杂页面,以上的步骤难度更大。而相关投入性价比极低。何况像@Consume这类是mock无法解决的。
所以更希望是即便有一些异常,可以内部try-catch住,不影响预览的生成,如果缺少一些属性,就用underline等生效到布局预览中。避免让开发者把太多的精力花在mock所有异常上
业界方案对比:对比Android的layout xml+DataBinding,同样确实了属性数据,但不影响layout的xml显示出布局效果和UI点击定位代码。对于一些需要mock数据显示到预览上的情况,layout xml只需要形如用tools:visibility的标签即可在xml上快速实现
能否跑预览的时候,优先把ui画出来,对于相关异常进行内部try-catch处理,而不是直接白屏。目前非常多的因素导致白屏和预览不可用
- @Consume、@Link、@Prop等需要父级页面传递参数的页面
- 需要路由传递参数的页面
- aboutToAppear等生命周期调用的一些业务方法,但相关调用无法在预览时初始化,导致报错
虽然通过mock等手段能解决其中部分问题,但是每次发现预览不出,要去看log,解问题,写mock本身链路就比较长。一旦遇到复杂页面,以上的步骤难度更大。而相关投入性价比极低。何况像@Consume这类是mock无法解决的。
所以更希望是即便有一些异常,可以内部try-catch住,不影响预览的生成,如果缺少一些属性,就用underline等生效到布局预览中。避免让开发者把太多的精力花在mock所有异常上
业界方案对比:对比Android的layout xml+DataBinding,同样确实了属性数据,但不影响layout的xml显示出布局效果和UI点击定位代码。对于一些需要mock数据显示到预览上的情况,layout xml只需要形如用tools:visibility的标签即可在xml上快速实现
更多关于HarmonyOS 鸿蒙Next Preview机制限制太多,很难用起来的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
2 回复
可以参考一下:
// 建议通过在ParentComp上添加[@Preview](/user/Preview),预览ParentComp来查看ChildComp的预览效果
[@Preview](/user/Preview) //组件预览
[@Component](/user/Component)
struct ParentComp {
// [@Provide](/user/Provide)装饰的变量reviewVotes由入口组件ParentComp提供其后代组件
[@Provide](/user/Provide) reviewVotes: number = 10;
build() {
Column() {
Button(`reviewVotes(${this.reviewVotes}), give +1`)
.onClick(() => this.reviewVotes += 1)
ChildComp()
}
}
}
// [@Preview](/user/Preview) 不建议直接预览ChildComp
[@Component](/user/Component)
struct ChildComp {
// [@Consume](/user/Consume)装饰的变量通过相同的属性名绑定其祖先组件ParentComp内的[@Provide](/user/Provide)装饰的变量
[@Consume](/user/Consume) reviewVotes: number;
build() {
Column() {
Text(`reviewVotes(${this.reviewVotes})`)
Button(`reviewVotes(${this.reviewVotes}), give +1`)
.onClick(() => this.reviewVotes += 1)
}
.width('50%')
}
}
更多关于HarmonyOS 鸿蒙Next Preview机制限制太多,很难用起来的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
HarmonyOS 鸿蒙Next Preview机制的限制确实较为严格,这主要是为了保障系统的稳定性和安全性。Preview版本通常用于测试和开发目的,旨在收集反馈并优化系统。因此,相比于正式版本,Preview版本在应用安装、权限管理、系统配置等方面会有更多的限制。
这些限制可能包括但不限于:
- 应用兼容性:Preview版本可能不支持所有已发布的应用,特别是那些依赖特定系统API或特性的应用。
- 权限管理:Preview版本对应用的权限管理可能更加严格,需要开发者进行额外的配置和申请。
- 系统配置:某些系统配置选项可能在Preview版本中不可用或受限,以确保系统的稳定性和安全性。
由于Preview版本的这些限制,确实可能会给开发者和用户带来一定的不便。然而,这些限制也是系统开发和测试过程中不可或缺的一部分。
如果您在使用HarmonyOS 鸿蒙Next Preview版本时遇到了困难,可以尝试查阅官方文档或社区论坛以获取更多信息。但请注意,由于Preview版本的特殊性,某些问题可能无法得到立即解决。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html 。