Я использую избыточную форму для создания формы аутентификации.
import React from 'react';
import Button from '@material-ui/core/Button';
import PropTypes from 'prop-types';
import { Field, reduxForm } from 'redux-form';
import Grid from '@material-ui/core/Grid';
import TextField from '../../components/TextFieldWrapper';
const Authentication = ({
classes,
submitting,
handleSubmit,
}) => (
<div>
<form onSubmit={handleSubmit}>
<Grid
container
direction="column"
alignContent="center"
spacing={24}
>
<Grid item xs={10} md={10} lg={10}>
<Field
name="Email"
type="email"
component={TextField}
label="Email"
/>
</Grid>
<Grid item xs={6}>
<Field
name="Password"
type="password"
component={TextField}
label="Password"
/>
</Grid>
<Grid item xs={6}>
<Button
variant="contained"
color="primary"
type="submit"
disabled={submitting
>
Login
</Button>
</Grid>
</Grid>
</form>
</PaperWrapper>
</div>
);
Authentication.propTypes = {
submitting: PropTypes.bool.isRequired,
handleSubmit: PropTypes.func.isRequired,
};
const AuthenticationForm = reduxForm({
form: 'AuthenticationForm',
})(Authentication);
export default AuthenticationFom;
TextFieldWrapper.jsx:
import React from 'react';
import PropTypes from 'prop-types';
import TextField from '@material-ui/core/TextField';
const TextFieldWrapper = ({
label,
type,
}) => (
<TextField
label={label}
margin="normal"
type={type}
variant="outlined"
/>
);
TextFieldWrapper.propTypes = {
label: PropTypes.string.isRequired,
type: PropTypes.string.isRequired,
};
export default TextFieldWrapper;
Когда я отлаживаю приложение, используя redux-devtools
, я обнаруживаю, что значение поля не меняется, что бы я ни указывал в TextFields.
Состояние таково:
Должен ли я добавить функции value
и onChange
к каждому полю. В документации Redux-формы они не добавляют value или onChange в свой FieldComponent Material-Ui Пример