HarmonyOS 组件内的一个prop定义后给默认值,外部调用不传这个属性。

HarmonyOS 组件内的一个prop定义后给默认值,外部调用不传这个属性。组件内通过这个属性计算了一个State值,发现计算不对。

代码及效果如图所示:

HarmonyOS 组件内的一个prop定义后给默认值,外部调用不传这个属性。-鸿蒙开发者社区

HarmonyOS
2024-08-30 09:45:24
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
FengTianYa

同一组件内的@State和@Prop在进行初始化时也遵循@Prop的单向数据绑定原则,即初始化时只能由@State向@Prop赋值。

建议将panelDirection更改为private类型或是用@State等其他装饰器修饰,或者在aboutToAppear函数内对isRow进行重新赋值初始化。

@Prop panelDiection:PanelDirection = PanelDirection.Row    
@State isRow:Boolean = this.panelDiection === PanelDirection.Row

由@State向@Prop赋值,所以先执行了isRow的初始化:

@State isRow:Boolean = this.panelDiection === PanelDirection.Row

这时候panelDiection是undefine,所以isRow会是false

然后才执行的panelDiection的初始化:

@Prop panelDiection:PanelDirection = PanelDirection.Row

所以结果会是 row,0,1

如果您把@Prop去掉,

panelDiection:PanelDirection = PanelDirection.Row    
@State isRow:Boolean = this.panelDiection === PanelDirection.Row 

这种情况panelDiection先初始化为PanelDirection.Row,

再执行的

@State isRow:Boolean = this.panelDiection === PanelDirection.Row

所以结果是正确的row,1,1

分享
微博
QQ
微信
回复
2024-08-30 18:02:08
相关问题
HarmonyOS 怎么属性默认值
773浏览 • 1回复 待解决
@Prop 为什么不能提供默认值啊?
2061浏览 • 1回复 待解决
HarmonyOS 类中属性默认值问题
222浏览 • 1回复 待解决
HarmonyOS原生如何flutter
368浏览 • 1回复 待解决
定义组件和绑定
934浏览 • 1回复 待解决
class使用闭包方式初始化 默认值丢失
1896浏览 • 1回复 待解决
ArkTS自定义组件如何父子间
363浏览 • 1回复 待解决