Я бы посоветовал вам выполнить проверку с использованием встроенных функций redux-form
, чтобы вы могли лучше контролировать свою кодовую базу.И будет лучше отделить ваши формы, а не помещать их в контейнеры, что кажется немного странным.Обычно я делаю что-то вроде следующего:
Я создал компонент без состояния для формы, так как мы не планируем изменять состояние внутри этого компонента.
forms / animal.form.js
import React from 'react';
import { connect } from 'react-redux';
import { reduxForm, Field } from 'redux-form';
import { renderTextField } from './FormHelpers';
import validate from './validate';
import submit from './submit';
let AnimalForm = (props) => {
const {
handleSubmit, submitting,
} = props;
return (
<div>
<form onSubmit={handleSubmit}>
<Field
label="Longitude"
name="longitude"
component={renderTextField}
type="text"
/>
<button type="submit" disabled={submitting}>Submit</button>
</form>
</div>
);
};
AnimalForm = reduxForm({
form: 'animal',
onSubmit: submit,
validate,
})(AnimalForm);
export default AnimalForm;
Когда вы пытаетесь отправить форму с помощью кнопки «Отправить», функция проверки будет вызываться с validate.js
.Сделайте все свои проверки внутри этой функции.Вы даже можете использовать регулярное выражение для проверки.
forms / validate.js
const validate = (values) => {
const errors = {};
if (!values.longitude) {
errors.longitude = 'This is a required field';
}
return errors;
};
export default validate;
Если ошибок проверки нет, вызывается функция submit из submit.js
.
forms / submit.js
function submit(values, dispatch, props) {
// PERFORM YOUR OPERATIONS HERE AND DISPATCH ACTIONS
const body = {
longitude: values.longitude,
};
dispatch(createAnimal(body));
}
export default submit;
Надеюсь, это поможет.Приветствия.