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

🐛[BUG] EditableProTable 设置了name属性后,新增一条数据会立即在表单field的值中更新这条数据,预期应该是在保存后再新增数据 #6103

Closed
xliez opened this issue Oct 20, 2022 · 5 comments

Comments

@xliez
Copy link
Contributor

xliez commented Oct 20, 2022

提问前先看看:

https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md

🐛 bug 描述

EditableProTable 设置了 name 属性后,新增一条数据会立即在表单field的值中更新这条数据,即使是取消这条数据;这样不符合预期,需要去手动处理这条空数据。

相反,如果不使用自带的 name 属性作为表单 filed ,而是在外层 使用 Form.Item 包裹则是符合预期的,新增一条数据是在保存后再新增到 field 中去

📷 复现步骤

新增一条数据,不保存 or 取消的情况下,查看对应的Field的值

复现: https://codesandbox.io/s/yu-formitem-pei-he-forked-uvrk8v?file=/App.tsx
官网的 《与 FormItem 配合》 这个例子也可以复现

🏞 期望结果

期望是新增数据时,是在保存后表单field的值才变更,而不是新增后就插入了无效的数据

💻 复现代码

复现: https://codesandbox.io/s/yu-formitem-pei-he-forked-uvrk8v?file=/App.tsx
官网的 《与 FormItem 配合》 这个例子也可以复现

© 版本信息

  • ProComponents 版本: 2.3.20
  • umi 版本: 3.x
  • 浏览器环境:Chrome
  • 开发环境 mac OS

🚑 其他信息

@chenshuai2144
Copy link
Contributor

配置了name,可编辑表格的数据就被 form 托管了,设计就是这样的。你可以配置 rule 或者自己洗一下数据

@WuJiY
Copy link
Contributor

WuJiY commented Nov 3, 2022

配置了name,可编辑表格的数据就被 form 托管了,设计就是这样的。你可以配置 rule 或者自己洗一下数据

我遇到了另外个问题,我在做sku表格,一个规格variant 用的是formlist 根据规格生成editableTable的sku表格,然后每次修改formList里的数据都会改变editableTablel里的数据,如果editabletable 的cloumn 设置 formItemPorps的rule属性 会影响生成的数据被置空了

@VicoHu
Copy link

VicoHu commented Nov 5, 2022

配置了name,可编辑表格的数据就被 form 托管了,设计就是这样的。你可以配置 rule 或者自己洗一下数据

@chenshuai2144 实际开发中,确实是需要后端校验是否保存的,比如数据库重复键校验,或者由于后端接口的异常导致的错误而没有持久化数据成功,这些都不是前端的规则校验可以完成的。
不知道有没有要计划要在这进行调整哈

@chenshuai2144
Copy link
Contributor

每次重新刷新所有的数据就能解决这个问题了,数据一致性的问题太难解决了

@Mustang-Galaxy
Copy link

配置了name,可编辑表格的数据就被 form 托管了,设计就是这样的。你可以配置 rule 或者自己洗一下数据

怎么个洗法?
目前能想到的就是把定成的 form 实例通过 context 传递下来
这样感觉好麻烦,EditableProTable 在单独的一个组件里面,中间还有路由隔开,能在当前组建里面处理吗?

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

No branches or pull requests

5 participants