小程序
小游戏
企业微信
微信支付
扫描小程序码分享
早前小程序的自定义组件的 properties,如果父级传入了 undefined,组件内取到的值就是 undefined。
而现在默认会做类型转换:String 收到空字符串,Number 收到 0,Boolean 收到 false,Object 收到 null,Array 收到空数组。造成很多时候 properties 的默认值形同虚设,需要另外做默认值兜底的工作。
请问有没有什么办法关掉这个类型转换呢?
2 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
对象属性,undefined都会类型转化,都需要我在ready里设置默认值。
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
举个例子,原本我有一个进步器 `stepper` 组件,它有个 `max` 属性可以控制最大值的范围,如果我不传这个值的时候,最大值就是999,否则就用传入的值作为最大值。
我只需要写
Component( properties: { max: { type: Number, value: 999 } } )
这样设置就可以了。
但是现在强制类型转换,导致我传入 `undefined` 时,会被默认转换成 `0`,导致默认值 `999` 被无视了?!我现在要想在 `max` 为 `undefined` 时默认值为 `999` 就只能这样写:
<stepper max="{{ goods.min_unit_buy_limit.max !== undefined ? goods.min_unit_buy_limit.max : 999 }}" />
如果我这个计步器多处使用的话,没处都要这么写才行。
我这里只是简单举一个例子,实际开发中这种情况非常普遍,写法上太过冗余。麻烦是其次,最大的问题是我现在已有项目中有非常非常多的组件受到这个改动的影响,实际影响范围难以估计,问题排查难度非常大。
我肯定还有人能想到比我这个更好的解法,但我觉得,如果这里强制类型转换了,那默认值是真的毫无用处了。
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
对象属性,undefined都会类型转化,都需要我在ready里设置默认值。
举个例子,原本我有一个进步器 `stepper` 组件,它有个 `max` 属性可以控制最大值的范围,如果我不传这个值的时候,最大值就是999,否则就用传入的值作为最大值。
我只需要写
Component( properties: { max: { type: Number, value: 999 } } )
这样设置就可以了。
但是现在强制类型转换,导致我传入 `undefined` 时,会被默认转换成 `0`,导致默认值 `999` 被无视了?!我现在要想在 `max` 为 `undefined` 时默认值为 `999` 就只能这样写:
<stepper max="{{ goods.min_unit_buy_limit.max !== undefined ? goods.min_unit_buy_limit.max : 999 }}" />
如果我这个计步器多处使用的话,没处都要这么写才行。
我这里只是简单举一个例子,实际开发中这种情况非常普遍,写法上太过冗余。麻烦是其次,最大的问题是我现在已有项目中有非常非常多的组件受到这个改动的影响,实际影响范围难以估计,问题排查难度非常大。
我肯定还有人能想到比我这个更好的解法,但我觉得,如果这里强制类型转换了,那默认值是真的毫无用处了。