HarmonyOS 鸿蒙Next:number类型能设置为空么? | 就像是@State text: string = ' '一样的形式 | 计数器的设计与实现

发布于 1周前 作者 phonegap100 来自 鸿蒙OS

HarmonyOS 鸿蒙Next:number类型能设置为空么? | 就像是@State text: string = ’ '一样的形式 | 计数器的设计与实现

我想要的是

@State SelectedQuantity :number = 0
转化为
@State SelectedQuantity :number = ‘’
类似于
@State text: string = ‘’
一样的空值<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

我试过写成

null 和 undefined 都会报错画横线

使用场景:构建一个计数器 Button TextInput Button这种

下面是已有的解决方案:

概览-控件 - 华为HarmonyOS开发者 (huawei.com)

这里面有好多官方定义的组件,

例如:

计数器数字加减-输入类-控件 - 华为HarmonyOS开发者 (huawei.com)

普通计数器的Gitee链接

进阶计数器的Gitee链接

在现有的解决方案中,按键中间的数字似乎无法点击输入具体数量。

当输入的数量为11时,你可以点击11次+1按钮或者点击一次+10按钮,一次+1按钮

改变计数器类型为INLINE时,数字可以点击输入。同时外观会发生改变。

@State SelectedQuantity :number = 0
TextInput({ text: this.SelectedQuantity.toString() ,placeholder: ‘请选择或填入’ })<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

在输入框中会显示0,而不是请选择或填入。

我在想是不是能把number设置为空,或者有什么其他的解决方案么

我先给出一种解决方案

一种可输入改变数字的计数器设计(默认显示占位符,点选后输入数字) | 华为开发者联盟 (huawei.com)

使用的时候修改一下

const CounterBuWidth: number = 22 //设置按钮的宽度

const CounterWidth: number = 200 //设置整个计数器的宽度

const CounterHeight: number = 35 //设置整个计数器的高度 }

//1.Row//////////////////////////////////////////

.width(‘100%’)这个参数让计数器默认沾满容器的宽度。本参数与CounterWidth的功能二选一即可

//.width(CounterWidth)这个参数在上面CounterWidth常量上能够进行设置

//.margin(50)这个参数能将预览显示的内容挤到中间,方便预览,使用时注释掉之后正常显示。

//1.Row//////////////////////////////////////////

1.博客的评论区不显示换行就很难受。还得是论坛的评论区功能多一点。

2.手机版本的开发者联盟好像看不了博客,这点比较难受

3.电脑版本的帖子评论的评论发表的的时候有概率会被卡顿消失掉,这也是你能在这里看到的原因。

原贴评论区HarmonyOS NEXT 应用 和 仓颉 开发流程-华为开发者论坛 | 华为开发者联盟 (huawei.com)
4.能不能开发一个评论区的楼层链接,点击一键跳转到指定楼层

5.本人纯小白,问题可能不大聪明,但是是本人直觉想到的东西,有什么好的建议和想法希望大家友好交流,谢谢。

9 回复

希望HarmonyOS能继续加强在安全性方面的研发,保护用户的隐私和数据安全。

[@State](/user/State) SelectedQuantity :number|null = null
[@State](/user/State) SelectedQuantity :number|null = null 这句在编辑器中不会报错,能赋值为空。 Text('-') .onClick(() => { this.SelectedQuantity = this.SelectedQuantity - 1 }) 在这里要怎么减一呀

你新增判断空值的情况,自行处理不就行了。空值你想怎么处理? { // 处理空值 if( null == this.SelectedQuantity){

}else{ this.SelectedQuantity = this.SelectedQuantity - 1 } }

HarmonyOS的分布式技术让我实现了跨设备的无缝协作,工作效率翻倍。

[@State](/user/State) SelectedQuantity :number = 0 TextInput({ text: this.SelectedQuantity.toString() ,placeholder: '请选择或填入' })

在这一步是不是就可以用  this.SelectedQuantity==0?'请选择或填入':String( this.SelectedQuantity) 来进行实现了

 
抱歉,本人能力有限。能再补充说明一下么,谢谢。

在HarmonyOS(鸿蒙)开发中,number 类型(如 JavaScript/TypeScript 中的数字类型)本身不支持直接设置为 null 或类似空值的概念,因为数字类型是一个基本数据类型,它要么有一个具体的数值,要么在某些上下文中可能未定义(undefined)或未初始化。

对于计数器的设计与实现,如果你需要表示一个可能为“空”或“未设置”的计数器值,可以考虑使用 number | nullnumber | undefined 类型(取决于你的具体需求),并在逻辑中处理这些空值情况。

如果问题依旧没法解决请加我微信,我的微信是itying888。

回到顶部