lowcode-engine
lowcode-engine copied to clipboard
feat: material spec add ignoreDefaultValue field to component property description
新增 ignoreDefaultValue 属性描述

用于满足复合属性的配置场景:
如下图的 AntD Table 物料描述,当 pagination 为 {} 则展示翻页,当 pagination 为 false 时则不展示翻页。而原来的物料描述中只有 condition 字段,这个字段只是控制显示隐藏与否,和设置 defaultValue 没有关系,因此需要新增 ignoreDefaultValue 来配置是否忽略 defaultValue 的字段。

这个方案目前看可以解决问题(当然物料有一波升级,但兼容上还是比较友好)。
有一个隐患就是,我当时pr里的方案增加visible判断,并且放在this.value !== undefined之前,主要原因是避免调用this.value。
假设pagination为false时,调用 pagination.xxx 属性的设置器的 `this.value` 会导致pagination被赋值为 `{}`,因为调用this.value会创建Prop,会导致pagination的Prop的type被设置为map
如下图,我调试了Table,当pagination为false时,初始化pagination.showSizeChanger的默认值,会调用如下路径,最终会导致
。
我的担心是如果后续的持续迭代导致在其他环节调用了 pagination.showSizeChanger 设置器的this.value,因为会导致pagination被重置,那么后续会出现奇怪的bug,例如下图,我调整了这个代码顺序,会导致
这种对this.value调用有严格的顺序要求,我觉得是个较大的隐患。
嗯嗯,现在 this.value 如果调用比如 pagination.page 的 value 的时候,的确会进行 pagination 对象初始化并赋值,但是这个如果要改动影响会比较大,后面我再看看怎么处理这个隐患。