我想验证某些操作中的特定字段。
我有一个包含多个字段的表单和一个内部表单,有一个包含4个字段的部分和一个单独的按钮,如Test connection
。因此,在按下该按钮时,我想发送一个API调用,但在此之前,我想在这些特定字段上显示验证错误。我找不到办法。如果你们知道,请告诉我。预先感谢。
<Form
onSubmit={handleSubmit}
initialValues={initData}
render={({
handleSubmit,
form,
submitting,
pristine,
values,
}) => {
return (
<form onSubmit={handleSubmit}>
<div className="form-body">
<h2>New Data Source</h2>
<FormGroup>
<Label for="name" sm={3}>
Name
</Label>
<Col sm={6}>
<Field
name="name"
placeholder="Name"
innerRef={dataSourceNameRef}
aria-label="name"
component={FormInput}
validate={composeValidators(isRequired)}
/>
</Col>
</FormGroup>
<div className="grey">
<Row>
<Col xs={12} sm={6} md={4}>
<FormGroup>
<Label for="name">Hostname</Label>
<Field
name="hostname"
placeholder="Hostname"
aria-label="hostname"
component={FormInput}
validate={composeValidators(isRequired)}
/>
</FormGroup>
</Col>
<Col xs={12} sm={5} md={2}>
<FormGroup>
<Label for="port">Port</Label>
<Field
name="port"
placeholder="Port"
aria-label="port"
component={FormInput}
validate={isRequired}
/>
</FormGroup>
</Col>
</Row>
<Row>
<Col xs={12} sm={6} md={4}>
<FormGroup>
<Label for="name">Username</Label>
<Field
name="username"
placeholder="Username"
aria-label="name"
component={FormInput}
validate={isRequired}
/>
</FormGroup>
</Col>
</Row>
<Row>
<Col xs={12} sm={6} md={4}>
<FormGroup>
<Label for="name">Password</Label>
<Field
name="password"
placeholder="Password"
aria-label="password"
type={values.showPassword ? 'text' : 'password'}
component={FormInput}
validate={composeValidators(isRequired)}
/>
</FormGroup>
</Col>
<Col xs={12} sm={6} md={4} className="checkbox-field">
<Field
name="showPassword"
aria-label="show password"
component={FormInput}
type="checkbox"
label="Show Password"
/>
<Label for="name"> Show Password</Label>
</Col>
</Row>
<Field
name="testConnection"
validateFields={['username', 'hostname', 'password']}
component={() => (
<Button
color="secondary"
onClick={() => testConnection(values)}
>
Test Connection
</Button>
)}
/>
</div>
</div>
<div className="form-footer justify-right">
<Button
type="submit"
disabled={submitting || pristine}
color="primary"
>
Create
</Button>
</div>
</form>
);
}}
/>
答案 0 :(得分:-1)
基本上,您只需要运行验证,并且仅在验证通过时才运行API调用。下面有一个示例,但是如果您可以共享代码以帮助其他人了解您的位置,那就太好了。
const handleCick = () => {
if (invalid) {
setInvalidPopup(true);
return;
}
//fetch...
};