Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: material spec add ignoreDefaultValue field to component property description #1720

Merged
merged 1 commit into from
Mar 16, 2023

Conversation

liujuping
Copy link
Collaborator

新增 ignoreDefaultValue 属性描述

image

用于满足复合属性的配置场景:

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

image

@AndyJinSS
Copy link
Contributor

这个方案目前看可以解决问题(当然物料有一波升级,但兼容上还是比较友好)。
有一个隐患就是,我当时pr里的方案增加visible判断,并且放在this.value !== undefined之前,主要原因是避免调用this.value。

image

假设pagination为false时,调用 pagination.xxx 属性的设置器的 `this.value` 会导致pagination被赋值为 `{}`,因为调用this.value会创建Prop,会导致pagination的Prop的type被设置为map 如下图,我调试了Table,当pagination为false时,初始化pagination.showSizeChanger的默认值,会调用如下路径,最终会导致

image

image

。 我的担心是如果后续的持续迭代导致在其他环节调用了 pagination.showSizeChanger 设置器的this.value,因为会导致pagination被重置,那么后续会出现奇怪的bug,例如下图,我调整了这个代码顺序,会导致

image

image

这种对this.value调用有严格的顺序要求,我觉得是个较大的隐患。

@liujuping
Copy link
Collaborator Author

嗯嗯,现在 this.value 如果调用比如 pagination.page 的 value 的时候,的确会进行 pagination 对象初始化并赋值,但是这个如果要改动影响会比较大,后面我再看看怎么处理这个隐患。

@JackLian JackLian merged commit 9597b1c into develop Mar 16, 2023
@JackLian JackLian deleted the feat/material-add-ignoreDefaultValue branch March 16, 2023 01:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants