收藏
回答

当组件属性是一个比较复杂对象的时候,怎么使用局部默认值?

比如某个属性是这样的:

style: {
    type: Object,
    value: {
        test001: ...,
        ...
        test100: ...,
    }
}


现在外部使用的时候我们只想提供某个域的值,其他保持默认值。请问是否有比较好的方法?谢谢!


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

1 个回答

  • brave
    brave
    2021-12-13
    let normalStyle = {
        test001: "test001",
        test100: "test100"
    }
    
    style: {
      type: Object,
      value: normalStyle
    },
    data: {
      normalStyle
    }
    
    <view>{{style.test100 || normalStyle.test100}}</view>
    
    2021-12-13
    有用 3
    回复 5
    • Junwei
      Junwei
      2021-12-13
      嗯,这个办法不错。多谢。唯一有个小问题,就是wxml每次使用到style的地方都需要这么写。
      2021-12-13
      回复
    • brave
      brave
      2021-12-13回复Junwei
      style不是组件里的吗。。。。
      2021-12-13
      回复
    • Junwei
      Junwei
      2021-12-13回复brave
      是的,我的意思是会增加wxml的代码长度。比如原来都是这么写的:
      <view>{{style.test100}}</view>
      现在全部用到style的地方全部要改为:
      <view>{{style.test100 || normalStyle.test100}}</view>


      单这样其实还好,有些用到的地方可能本身已经有一定的复杂度,比如<view style="width: calc(100% - {{style.custom?style.width:0}});"/>
      那么这么改完就比较复杂了。可能需要单独写个wxs函数处理比较好。
      2021-12-13
      回复
    • brave
      brave
      2021-12-13回复Junwei
      其实有很多处理方式,js里遍历两个对象进行赋值,或者是 wxs传入两个对象,处理完数据后返回"width: calc(100vw - 100rpx)"这类
      2021-12-13
      回复
    • Junwei
      Junwei
      2021-12-13
      嗯,明白。js里处理感觉不是很好,毕竟跟业务逻辑不是很相关。专门写个wxs函数又感觉有点浪费了,就一两行代码。
      2021-12-13
      回复
登录 后发表内容