alibaba / lowcode-engine

An enterprise-class low-code technology stack with scale-out design / 一套面向扩展设计的企业级低代码技术体系
https://lowcode-engine.cn
MIT License
14.58k stars 2.53k forks source link

物料 meta 描述文件的props 字段,不设置 setter,会根据 propType 自动推断出 setter,但推断逻辑返回了 initialValue,导致 prop 初始值有误 #388

Closed twinkle77 closed 2 years ago

twinkle77 commented 2 years ago

Describe the bug (required) / 详细描述 bug(必填)

image

meta 文件 props 不写 setter 会带来如下问题:

  1. 组件一拖入画布,maxLength,Count 等 number 类型的 props,默认值会为 0,导致用户无法输入
  2. boolean 类型的 prop,defaultValue设置为 true 无效,导致表单类组件的 border 无法显示(lowcode-demo 可复现)
  3. 对于无必要的 props,不写 setter,生成的 schema 会有对应的默认值,而这个 默认值(或者说默认 prop) 是不需要的

To Reproduce (required) / 如何复现 bug?(必填,非常重要)

  1. 访问 lowcode-demo - https://lowcode-engine.cn/demo/basic-antd.html
  2. 拖入 Form.Item 组件

如下图,红框字段的 Form.Item 组件 valuePropName 属性(就是由于 meta 文件没有给 valuePropName 属性配置 setter,导致组件一拖拽进画布,生成的 schema 就默认有 valuePropName 属性,而 valuePropName = ‘’ 空字符,会导致 Form. 组件 收集不到 Form.Item 的值,默认要为 'value',第二张图片为 antd 文档)

image

image

Expected behavior (required) / 预期行为(必填,非常重要)

拖入 Form.item 组件 valuePropName 的值为默认值 "value" - antd Form.Item 的 meta 描述文件

Additional context (optional) / 更多额外信息(可选)

以上拿 Form.Item 举例,但归根是解析 meta.ts 文件的逻辑问题

解析 meta.ts 文件的源码位置 - https://github.com/alibaba/lowcode-engine/blob/main/packages/editor-skeleton/src/transducers/parse-props.ts#L32

image

initialValue 的设置,应该以 defaultValue 为准,如果没有 defaultValue,则不设置 initialValue

twinkle77 commented 2 years ago

@hujiulong @mark-ck 大佬们,"initialValue 的设置,应该以 defaultValue 为准,如果没有 defaultValue,则不设置 initialValue" 改成这个逻辑能否接受

jinchanz commented 2 years ago

@hujiulong @mark-ck 大佬们,"initialValue 的设置,应该以 defaultValue 为准,如果没有 defaultValue,则不设置 initialValue" 改成这个逻辑能否接受

这可以是个很好的 PR 呀,来吧

twinkle77 commented 2 years ago

好的,我提个 pr

github-actions[bot] commented 2 years ago

This issue is stale because it has been open 10 days with no activity. Remove stale label or comment or this will be closed in 2 days.

github-actions[bot] commented 2 years ago

This issue was closed because it has been stalled for 10 days with no activity.