收藏
回答

当外部传递无效参数时,能否使用组件默认值?

一般情况下,我们只要需要如下设置就可以使用参数的默认值。

  test: {
      type: Boolean,
      value: true
  }


但是,当调用组件方提供了test属性,但是同时test又为null(或undifined)的时候有没有办法让组件使用默认值?

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

2 个回答

  • brave
    brave
    2021-12-13
    test: {
      typeBoolean,
      value: true,
      observer (value) {
        if ((!value && typeof(value)!="undefined" && value!=0) || typeof(value)=="undefined") {
          this.setData({
            test: true
          })
        }
      }
    }
    // 试一下?
    
    2021-12-13
    有用 2
    回复 3
    • Junwei
      Junwei
      2021-12-13
      这个方法可以,但是有一个小问题。如果wxml本身会直接使用到这个属性,现在通过observer去设置,会不会造成界面延迟?比如我有个height属性,本身默认是100px,那么组件高度一出来就是100px,通过observer去设置的话,开始如果value为null,那么组件其实就没有高度了,再setData,会不会造成界面闪动?
      2021-12-13
      回复
    • brave
      brave
      2021-12-13回复Junwei
      你的设计上只能如此了,不然就是你父组件传一个string的false
      2021-12-13
      回复
    • Junwei
      Junwei
      2021-12-13
      好的谢谢
      2021-12-13
      回复
  • 武曲心
    武曲心
    2021-12-13

    用wxs写个表达式规范一下传入的值是什么就好了,都不用管他默认是什么

    2021-12-13
    有用
    回复 3
    • Junwei
      Junwei
      2021-12-13
      如果这个属性是个对象,里面又包含了很多域(需要默认值)。wxml中会使用到这些域。这个时候不通过wxs的话可能只需要这么写:<view style="width: {{style.width}}px;">
      但是用wxs的话wxml的复杂度就大大增加了。
      2021-12-13
      回复
    • 武曲心
      武曲心
      2021-12-13回复Junwei
      你这不是布尔值吗,怎么扯到对象上了
      2021-12-13
      回复
    • 武曲心
      武曲心
      2021-12-13回复Junwei
      默认值的意思是不传值时就是取默认,而你这是要变值哦,传无效值也得是默认值,这是要做判断转换的
      2021-12-13
      回复
登录 后发表内容