Redux表单-如何通过标志禁用同步/异步验证

时间:2019-01-09 10:48:57

标签: reactjs react-redux react-router redux-form react-redux-form

我正在寻找一种最无创的方法来出于开发/调试目的而禁用Redux表单验证
我有一个类似于教程https://redux-form.com/8.1.0/examples/wizard/的向导形式,但我使用的是字段验证器和异步验证器
我仍然想显示错误,但是即使验证失败也可以继续执行下一步向导
我想在URL上添加一个标志,例如?ignore-validation = true(使用react router)

这是我的向导第一步的一部分:

export class CustomerStep1 extends React.PureComponent<FormProps> {
    render(): React.Node {
            const {
                handleSubmit,
            } = this.props;

            const submit = handleSubmit(createValidateCardAction);

            return (
                    <form onSubmit={submit}>

                                    <Field
                                        name="card_number"
                                        placeholder="7777 1234 5678 9012"
                                        component={Input}
                                        validate={cardNumber}
                                    />
...

export default reduxForm({
    form: 'customerWizard',
    destroyOnUnmount: false,
    forceUnregisterOnUnmount: true,
})(CustomerStep1);

1 个答案:

答案 0 :(得分:1)

我在这里看到两种可能性:

1)将您的向导表单拆分为多个表单,并分别进行验证。您可以创建另一个状态来控制要显示的表单。即使它有更多的状态要管理,我还是会选择一个。

2)您可以只为每个字段保留异步验证,然后在其中抛出错误。另外,您必须创建一个状态来管理页面并在异步验证功能中对其进行管理。我创建了第二种方法的示例:https://codesandbox.io/s/o46k8lx7kz