В настоящее время я создаю Select
с избыточной формой и materialUI, и он всегда возвращает invalid
.Так что я немного в растерянности.
Я бы хотел, чтобы реквизиты были переданы в «Выбрать», чтобы корректно отображалось текущее состояние «Выбор», «IE недействителен», «Нетронутый» и т. Д.
Использование
<Field
onUpdate={this.changeAge.bind(this)}
name={`title`}
props={{ value: this.props.registration.Title }}
component={SelectField}
label={`Title*`}
validate={[requiredField]}
options={[{ value: 'mr', text: 'Mr' }, { value: 'mrs', text: 'Mrs' }]}
/>
function mapStateToProps(state) {
return {
registration: state.registration
};
}
function mapDispatchToProps(dispatch) {
return {
updateKYCItem: bindActionCreators(updateKYCItem, dispatch)
};
}
export default connect(
mapStateToProps,
mapDispatchToProps
)(
reduxForm({
form: 'RegistrationIntroduction',
onSubmit,
onSubmitSuccess
})(RegistrationIntro)
);
Итак, здесь происходит передача значения через аргумент props
как IНе знаю другого способа передать значение, так как я использую приставку.
Поле выбора - Select.js
export default props => {
console.info(props.meta, props.input);
let theme = props.meta.valid && props.meta.touched ? textFeild.validTheme : textFeild.defaultTheme;
const hasError = props.meta.invalid && props.meta.touched && props.value === '';
return (
<MuiThemeProvider theme={theme}>
<FormControl error={hasError}>
<InputLabel htmlFor="age-simple">{props.label}</InputLabel>
<Select
onChange={event =>
props.onUpdate({
value: event.target.value,
field: props.input.name
})
}
value={props.value ? props.value : ''}
inputProps={{ ...props }}
>
{props.options.map(option => (
<MenuItem selected={props.value === option.value} value={option.value}>
{option.text}
</MenuItem>
))}
</Select>
{hasError &&
<FormHelperText>{props.meta.error}</FormHelperText>
}
</FormControl>
</MuiThemeProvider>
);
};
Select.propTypes = {
id: PropTypes.string,
name: PropTypes.string.isRequired,
label: PropTypes.string.isRequired
};