微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

当我导航到页面组件时 Redux-form 不验证

如何解决当我导航到页面组件时 Redux-form 不验证

我有这个 redux-form。如果我刷新页面,表单效果很好。它验证并显示错误消息。但是如果转到另一条路线并导航到我有表格的路线,即使表格为空,我也可以提交表格。

这是我的表格:

const validate = (values) => {
    const errors = {};
    if (!values.old_password) {
        errors.old_password = 'required';
    }
    if (!values.password) {
        errors.password = 'required';
    } else if (!/^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.{8,})/.test(values.password)) {
        errors.password =
            'Password should be at least eight characters,one uppercase letter and one number';
    }
    if (!values.confirm_password) {
        errors.confirm_password = 'required';
    } else if (
        values.password &&
        values.confirm_password &&
        values.password !== values.confirm_password
    ) {
        errors.confirm_password = 'Passwords do not match';
    }
    return errors;
};

const ChangePasswordForm = (props) => {
    const { handleSubmit } = props;
    return (
        <form
            className={styles.profileForm + ' ' + styles.changePasswordForm}
            onSubmit={handleSubmit}>
            <React.Fragment>
                <h4>Change Password</h4>
                <label>
                    <span>Old password</span>
                    <Field
                        name="old_password"
                        type="password"
                        label={'Old Password'}
                        component={RenderInput}
                    />
                </label>
                <label>
                    <span>Password</span>
                    <Field
                        name="password"
                        type="password"
                        label={'Password'}
                        component={RenderInput}
                    />
                </label>
                <label>
                    <span>Confirm password</span>
                    <Field
                        name="confirm_password"
                        type="password"
                        label={'Confirm Password'}
                        component={RenderInput}
                    />
                </label>
            </React.Fragment>

            <button className={'btn-primary'} type="submit">
                Save changes
            </button>
        </form>
    );
};
export default reduxForm({
    form: 'change-password-form',// <------ same form name
    validate
})(ChangePasswordForm);

好像当我导航到页面时它没有正确初始化,因为它不存在于组件 props.form 中。单击它在组件 props.form.change-password-form 中显示的任何输入后,但仍未验证,我可以使用不同的新密码提交表单并确认密码

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。