reactjs - 如何添加电子邮件存在验证以基于 Api 响应响应 js
问题描述
表单项以显示表单字段这是我的代码
import { Form, Input, Button, Select, } from 'antd';
import axios from "axios";
render() {
const isLoading = this.state.isLoading;
return (
<>
<Form className={'auth-form'} onSubmit={(e) => { this.onSubmit(e) }}>
<h3 className={'mb-5 text-center'}>Candidate Sign Up</h3>
<Form.Item
label=""
name="email"
rules={[{ required: true, type: 'email', message: 'Please enter email address'}]}
>
<Input className={'ks-form-control'} placeholder={'Enter Email'} onChange={this.onChangehandler} />
</Form.Item>
<Form.Item
label=""
name="password"
rules={[{ required: true, message: 'Please input your password!' }]}
>
<Input.Password className={'ks-form-control'} placeholder={'Password'} />
</Form.Item>
<Form.Item
label=""
name="confirmPassword"
rules={[{ required: true, message: 'Please confirm your password!' }]}
>
<Input.Password className={'ks-form-control'} placeholder={'Confirm Password'} />
</Form.Item>
<Form.Item >
<Button className={'btn-custom px-4 py-2 d-block w-100'} type="primary" htmlType="submit">
Create an account
</Button>
</Form.Item>
</Form>
</>
)
}
这是提交处理程序的代码。我想在 rules={[{}]} 处显示来自 api 的消息和使用以下代码的自定义消息
msg: response.data.message
在提交处理程序
onSubmitHandler = (e) => {
e.preventDefault();
this.setState({ isLoading: true });
axios
.post("http://127.0.0.1:8000/api/user-signup", this.state.signupData)
.then((response) => {
this.setState({ isLoading: false });
if (response.data.status === 200) {
this.setState({
msg: response.data.message // message comming from api
});
}
if (response.data.status === "failed") {
this.setState({ msg: response.data.message }); // message comming from api
}
});
}
所有字段的验证都与 rules={[]} 一起正常工作。但是我想根据 api 响应显示错误,例如如果电子邮件已经注册,那么这将显示消息“电子邮件已经存在”请告诉我我该怎么做
解决方案
了解什么是 Form.Item 以及您在此处使用的 UI 库会很有帮助。如果您可以在组件上设置规则,您可能还可以设置“错误”属性。我对您提供的内容的最佳猜测是:
const [emailError, setEmailError] = useState(false)
const = onSubmit = (formvalues) => {
const { email } = formvalues
validateEmailViaAPI(email).then((response) => response.isValid ? doWhatEver(formvalues) : setEmailError(true))
}
const onChangeEmail = () => setEmailError(false)
在您的输入组件中,您可以专门设置错误:
<Form.Input error={emailError}> </Form.Input>
如果您自己设置错误,这应该会显示错误消息。这可能发生在组件使用的“规则”属性后面。
不要忘记在有用的地方清除错误。如果您多次使用它,将验证放在自定义钩子中是有意义的。
如果这没有帮助,请提供有关您正在使用的输入组件的更多输入。
推荐阅读
- amazon-quicksight - 如何获取特定用户拥有的 Amazon QuickSight 资源列表?
- php - 将 .htaccess 文件转换为 nginx
- r - 迭代 r 中列的行名
- data-structures - 在二叉树中,兄弟节点一定是有序的吗?
- python - Pandas pd.series 返回一个数据框
- html - 在从上到下排序的 2 列中显示 div
- php - 参数 1 传递给 Symfony\Component\VarDumper\Server\Connection::__construct() ... 在第 49 行的 DumpServerServiceProvider.php 中调用
- c# - 在 .NET 中,什么时候调用 getter 和 setter?
- python - 重组 pandas 数据框,将 Column 变成新的 Header,原始 Header 成为具有预先存在的 Column 的多索引的一部分
- angular - 如何与重定向共享令牌验证功能?