typescript - React-Redux、Yup 和 formik 的表单验证问题
问题描述
当我尝试使用 Formik 和 Redux 使用 Yup 验证输入数据时遇到问题。在 Redux 之前它工作得很好,但是由于我使用 Redux 扩展了我的应用程序,Yup 的行为就像输入中没有数据一样,但它就在那里。我会将我的代码减少到只有一个输入,但每三个输入都是相同的行为
import CustomTextField from "./CustomTextField";
import { validationSchema } from "./schemas/schemas";
const MainForm: React.FC = () => {
const formValue = useSelector((state: any) => state.form);
const dispatch = useDispatch();
return (
<div>
<Formik
initialValues={{...}}
validationSchema={validationSchema}
onSubmit={() => {
dispatch(isFormSaved(true));
}}
>
{({ isSubmitting }) => (
<Form style={{ display: "flex", flexDirection: "column" }}>
<CustomTextField
placeholder="Title"
name="title"
type="input"
value={formValue.title}
/>
<Button disabled={isSubmitting} type="submit">
Submit
</Button>
</Form>
)}
</Formik>
</div>
);
};
export default MainForm;
和 customTextField:
const CustomTextField: React.FC<FieldAttributes<{}>> = ({
placeholder,
...props
}) => {
const [field, meta] = useField<{}>(props);
const errorText = meta.error && meta.touched ? meta.error : "";
const dispatch = useDispatch();
return (
<TextField
placeholder={placeholder}
{...field}
helperText={errorText}
error={!!errorText}
value={props.value}
onChange={(event: SyntheticEvent) => {
dispatch(saveForm(event));
}}
></TextField>
);
};
export default CustomTextField;
解决方案
推荐阅读
- android - Google Play:您的设备与此版本不兼容。所有设备上都出现错误,但我可以在手机上本地运行 APK
- python - numpy.ndarray 对象的内置方法 ravel... 在数组中
- c# - 将 DataRow 转换为 T 类型时,C# Int64Converter 无法从 System.Int64 错误转换
- django - 带有非英文字符的 django python 密码重置电子邮件主题
- linux-kernel - 在 URB 完成例程中调用 send_sig_info() 是否安全?
- android - 无法解析 com.google.android.gms.ads.MobileAds
- javascript - Websocket - 在应用程序在后台和前夕期间断开用户 Android/iOS
- android - 如何在android Matlab中获取文件的路径
- entity-framework - 实体框架6代码中的多对多关系优先
- python - 随机游走得到不好的结果