【发布时间】:2018-12-24 03:07:56
【问题描述】:
我正在使用 Formik 来验证表单数据。作为附加验证,我检查数据库中是否存在用户电子邮件。我有这个代码工作,但我不喜欢它内联。有没有更好的方法来写这个,所以验证不必是内联的?我不明白如何让客户通过。
<Form className="form">
<ApolloConsumer>
{client => (
<Field className="text-input" type="email" name="email" placeholder="Email" validate={async (value) => {
let error
const response = await client.query({
query: USER_EXISTS,
variables: {
query: value
}
})
console.log(response.data.userExists)
if (response.data.userExists) {
error = 'Email taken'
}
return error
}} />
)}
</ApolloConsumer>
<Form>
例如,像这样:
<ApolloConsumer>
{client => (
<Field className="text-input" type="text" name="username" placeholder="Username" validate={this.validateUsername(client)} />
)}
</ApolloConsumer>
validateUsername = async (value, client) => {
let error
const response = await client.query({
query: USER_EXISTS,
variables: {
query: value
}
})
console.log(response.data.userExists)
if (response.data.userExists) {
error = 'Username taken'
}
return error
}
【问题讨论】:
标签: javascript apollo react-apollo formik