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

动态规则rules为空时,已校验出的错误无法被消除 #51008

Open
LimMem opened this issue Sep 25, 2024 · 6 comments · May be fixed by react-component/field-form#729
Open

动态规则rules为空时,已校验出的错误无法被消除 #51008

LimMem opened this issue Sep 25, 2024 · 6 comments · May be fixed by react-component/field-form#729
Labels
help wanted The suggestion or request has been accepted, we need you to help us by sending a pull request. Inactive

Comments

@LimMem
Copy link

LimMem commented Sep 25, 2024

Reproduction link

https://codesandbox.io/p/sandbox/antd-reproduction-template-forked-sr3vgc?workspaceId=f8c8b8be-9c36-4d85-adcf-c7766abab738

Steps to reproduce

  1. 选中昵称是否需要校验,此时会显示昵称的错误信息
  2. 取消昵称是否需要校验,此时不会取消昵称错误信息
    image

What is expected?

当rules为空数组时,能正确的将错误信息去掉

What is actually happening?

当rules为空数组时,无法移除已经校验的错误信息

Environment Info
antd 4.24.16
React 17.x
System mac os
Browser chrome

经过断点排查发现这个错误来自rc-form-field/src/useForm.ts#904 当rule为空时,无法不再触发校验逻辑。 代码如下

app

目前的临时解决方案


/**
 * 空规则标识
 * gai
 */
const EMPTY_RULE_SYMBOL = Symbol('EMPTY_SYMBOL');

/**
 * 为了规避rc-form-field的校验bug
 * 具体代码可以参考rc-form-field/src/useForm.ts#904
 * @returns
 */
export const createEmptyRule = (): any => {
  return {
    [EMPTY_RULE_SYMBOL]: true,
  };
};

// 需要为空时
setRules([createEmptyRule]);
@zombieJ
Copy link
Member

zombieJ commented Sep 25, 2024

codesandbox 没有设置公开:
截屏2024-09-25 10 22 19

@zombieJ zombieJ added 🤔 Need Reproduce We cannot reproduce your problem and removed unconfirmed labels Sep 25, 2024
Copy link
Contributor

Hello @LimMem. Please provide a online reproduction by forking this one or provide a minimal GitHub repository like create-react-app-antd. Issues labeled by Need Reproduce will be closed if no activities in 3 days.

你好 @LimMem,我们需要你提供一个在线的重现实例以便于我们帮你排查问题。你可以通过 fork 这个在线重现案例 ,或者提供一个最小化的 GitHub 仓库(类似 create-react-app-antd)。3 天内未跟进此 issue 将会被自动关闭。

什么是最小化重现,为什么这是必需的?

@LimMem
Copy link
Author

LimMem commented Sep 25, 2024

@github-actions github-actions bot closed this as not planned Won't fix, can't repro, duplicate, stale Sep 29, 2024
@afc163 afc163 removed the 🤔 Need Reproduce We cannot reproduce your problem label Sep 29, 2024
@afc163 afc163 reopened this Sep 29, 2024
@afc163
Copy link
Member

afc163 commented Sep 29, 2024

确实是个问题,可以来个 PR 修修看。

@afc163 afc163 added the help wanted The suggestion or request has been accepted, we need you to help us by sending a pull request. label Sep 29, 2024
Copy link
Contributor

Hello @LimMem. We totally like your proposal/feedback, welcome to send us a Pull Request for it. Please send your Pull Request to proper branch (feature branch for the new feature, master for bugfix and other changes), fill the Pull Request Template here, provide changelog/TypeScript/documentation/test cases if needed and make sure CI passed, we will review it soon. We appreciate your effort in advance and looking forward to your contribution!

你好 @LimMem,我们完全同意你的提议/反馈,欢迎直接在此仓库 创建一个 Pull Request 来解决这个问题。请将 Pull Request 发到正确的分支(新特性发到 feature 分支,其他发到 master 分支),务必填写 Pull Request 内的预设模板,提供改动所需相应的 changelog、TypeScript 定义、测试用例、文档等,并确保 CI 通过,我们会尽快进行 Review,提前感谢和期待您的贡献。

giphy

@Jarryxin
Copy link
Contributor

https://ant-design.antgroup.com/components/form-cn#form-demo-dynamic-rule
改成官网这种写法是否更合理,不要移除rules中的项,改变项的属性。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted The suggestion or request has been accepted, we need you to help us by sending a pull request. Inactive
Projects
None yet
4 participants