我有一个Relay应用程序,它与服务器共享一个GraphQL架构。对于每个突变,它查询服务器,服务器返回错误消息,告知哪个字段值无效。但是,鉴于客户端上也存在模式,是否可以针对此模式进行客户端验证?
答案 0 :(得分:0)
一种实用的解决方案是使用Yup和Formik符号,然后在前后均共享的inputType周围手动创建yup模式对象。
虽然您没有根据中继编译器提供的架构来验证1-1,但这仍然是在客户端进行验证的实用方法。
JavaScript解决方案:基于自定义输入类型创建验证模式,并将validationSchema传递给Formik:
const Schema = object().shape({
coolOrWhat: boolean()
});
return (
<Formik
initialValues={{
coolOrWhat: true
}}
validationSchema={Schema}
...
>
{/* form inputs here */}
</Formik>
)
TypeScript解决方案:实例化formik组件时,创建用于验证的对象,推断类型并注释该对象:
const Schema = object({
foo: string()
});
export type SchemaType = InferType<typeof Schema>;
type Props = {
onConfirm: (value: SchemaType) => void;
onCancel: () => void;
};
<Formik<SchemaType>
validationSchema={Schema}
...>
...
</>