收藏
回答

自定义组件属性的值能否不强制转换类型?

早前小程序的自定义组件的 properties,如果父级传入了 undefined,组件内取到的值就是 undefined。

而现在默认会做类型转换:String 收到空字符串,Number 收到 0,Boolean 收到 false,Object 收到 null,Array 收到空数组。造成很多时候 properties 的默认值形同虚设,需要另外做默认值兜底的工作。

请问有没有什么办法关掉这个类型转换呢?

回答关注问题邀请回答
收藏

2 个回答

  • Joker
    Joker
    2022-01-28

    对象属性,undefined都会类型转化,都需要我在ready里设置默认值。

    2022-01-28
    有用
    回复
  • Lynch Bel
    Lynch Bel
    2021-09-06

    举个例子,原本我有一个进步器 `stepper` 组件,它有个 `max` 属性可以控制最大值的范围,如果我不传这个值的时候,最大值就是999,否则就用传入的值作为最大值。

    我只需要写

    Component(
        properties: {
            max: {
                type: Number,
                value999
            }
        }
    )
    


    这样设置就可以了。

    但是现在强制类型转换,导致我传入 `undefined` 时,会被默认转换成 `0`,导致默认值 `999` 被无视了?!我现在要想在 `max` 为 `undefined` 时默认值为 `999` 就只能这样写:

    <stepper
        max="{{ goods.min_unit_buy_limit.max !== undefined ? goods.min_unit_buy_limit.max : 999 }}"
    />
    


    如果我这个计步器多处使用的话,没处都要这么写才行。

    我这里只是简单举一个例子,实际开发中这种情况非常普遍,写法上太过冗余。麻烦是其次,最大的问题是我现在已有项目中有非常非常多的组件受到这个改动的影响,实际影响范围难以估计,问题排查难度非常大。

    我肯定还有人能想到比我这个更好的解法,但我觉得,如果这里强制类型转换了,那默认值是真的毫无用处了。






    2021-09-06
    有用
    回复
登录 后发表内容
问题标签