【发布时间】:2023-02-22 02:33:25
【问题描述】:
我有一个关于输入验证的问题。我将 Fabric UI 用于文本字段,其中包含我用来验证输入的 onGetErrorMessage。文本字段是受控元素。一切正常,除了有那么一刻,当我重置/清除字段时,它触发了验证,然后我收到错误消息,说不能为空,由于验证,这很好,但如果我们正在谈论重置。
我将在此处发布我使用的部分代码。
const els: React.ReactElement[] = [];
els.push(<ChoiceGroup label = "Choice" selectedKey = {student.Choice} options = {choices} onChange = {(e: any, selectedItem: any) => ...} />);
els.push(<TextField label='Name' required value = {student.Name} onChange = {(e: any, value: any) => ....} validateOnLoad = {false}
onGetErrorMessage = {(value: string) => validate('Name', value, els)} />);
els.push(<TextField key='Age' label="Age" required value = {student.Age} onChange = {(e: any, value: any) => ..} validateOnLoad = {false}
onGetErrorMessage = {(value: string) => validate('Age', value, els)} />);
我们有显示的 3 个元素,现在在选择更改时,我需要清除文本字段,我按如下方式进行操作:
useEffect(() => {
// I modify the state here, and set Age and Name of the student object to ''
// which triggers then onGetErrorMessage
}, [student.Choice]);
在不触发验证的情况下重置文本字段值的最佳方法是什么,但是当用户手动清除文本字段(使其为空)时,这仍然必须起作用
任何想法? 我将不胜感激....坚持了一段时间......
【问题讨论】:
-
当这些组件首次呈现时,最初是否也会触发该错误消息?
-
通常是的,但不是这个 validateOnLoad = {false}
-
我只是想保持相同的行为 onLoad 和清除它不应该显示错误......也许我需要重新创建这些字段......我不知道我最好做什么 tbh:/
-
你检查答案了吗?
标签: reactjs validation react-hooks fluentui-react