Я использую для моей формы редукцию-form-material-ui. С помощью кода ниже я ничего не могу напечатать на текстовом поле. Я хочу сказать, что в текстовом поле ничего не получается. В моей форме есть два текстовых поля и один автозаполнение. Один для имени устройства и другой для значения тайм-аута. Однако автозаполнение работает. Почему он не показывает текст, который я набрал?Невозможно ввести текст внутри текстового поля
В чем причина этой проблемы? Я где-то ошибся?
См. Изображение прилагается. Я не могу написать что-либо в поле ввода имени устройства и таймаута. В поле ввода можно выбрать только поле автозаполнения.
Вот мой код
import React, { Component } from 'react';
import _ from 'lodash';
import { connect } from 'react-redux';
import { Field, reduxForm } from 'redux-form';
import {
AutoComplete as MUIAutoComplete, MenuItem,
FlatButton, RaisedButton,
} from 'material-ui';
import {
AutoComplete,
TextField
} from 'redux-form-material-ui';
const validate = values => {
const errors = {};
const requiredFields = ['deviceName', 'deviceIcon', 'deviceTimeout'];
requiredFields.forEach(field => {
if (!values[field]) {
errors[field] = 'Required';
}
});
return errors;
};
class DeviceName extends Component {
handleSubmit = (e) => {
e.preventDefault();
this.props.handleNext();
}
render() {
const {
handleSubmit,
fetchIcon,
stepIndex,
handlePrev,
pristine,
submitting
} = this.props;
return (
<div className="device-name-form">
<form>
<div>
<Field
name="deviceName"
component={TextField} {/* cannot type */}
floatingLabelStyle={{ color: '#1ab394' }}
hintText="Device Name"
onChange={(e) => this.setState({ deviceName: e.target.name })}
/>
</div>
<div>
<Field
name="deviceIcon"
component={AutoComplete} {/* works */}
hintText="icon"
openOnFocus
filter={MUIAutoComplete.fuzzyFilter}
className="autocomplete"
dataSource={listOfIcon}
onNewRequest={(e) => { this.setState({ deviceIcon: e.id }); }}
/>
</div>
<div>
<Field
name="deviceTimeout"
component={TextField} {/* cannot type */}
floatingLabelStyle={{ color: '#1ab394' }}
hintText="Device Timeout"
ref="deviceTimeout" withRef
onChange={(e) => this.setState({ deviceTimeout: e.target.name })}
/>
</div>
<div style={{ marginTop: 12 }}>
<RaisedButton
label={stepIndex === 4 ? 'Finish' : 'Next'}
primary
disabled={pristine || submitting}
className="our-btn"
onTouchTap={(e) => handleSubmit(e)}
/>
</div>
</form>
</div>
);
}
}
const mapStateToProps = ({ fetchIcon }) => ({
fetchIcon
});
const DeviceForm = reduxForm({
form: 'DeviceForm',
validate,
})(DeviceName);
export default connect(mapStateToProps)(DeviceForm);
Просьба прояснить текстовое поле, которое не работает, и предоставить более минимальный случай вашей проблемы. Это поможет людям проанализировать ваш код. привет –
Можете ли вы использовать 'setState()' in React без предварительной инициализации состояния? –
да это может быть. Я использовал это при добавлении других данных и их работе. Мы также можем сделать это, если мы не хотим показывать начальное состояние в форме. – Serenity