Я использую автозаполнение пользовательского интерфейса, чтобы отфильтровать список значений, я использовал событие onChange AutoComplete. Чтобы повлиять на значения, введенные вручную, я использовал событие onChange объекта TextFiled, находящегося в Автозаполнении.
Но это конфликтует с событием onChnage в Автозаполнении, и список не фильтруется. Может ли кто-нибудь направить меня, где я допустил ошибку?
Код такой, как показано ниже:
<Autocomplete
freeSolo
options={this.state.dimension.map(p => p)}
renderInput={params => (
<TextField
{...params}
margin="normal"
variant="outlined"
fullWidth
autoComplete="off"
required
onChange={this.handleDimensionChangeManual}
/>
)}
onChange={this.handleDimensionChange}
value={this.state.dimemsionValue}
/>
Обе функции следующие:
handleDimensionChangeManual (event) {
let newState = Object.assign({}, this.state);
if (event.target.value && newState.dimemsionValue != event.target.value) {
newState.dimemsionValue = event.target.value;
if (
newState.dimension.includes(newState.dimemsionValue) === false &&
newState.dimemsionValue.length > 0
) {
newState.remark =
"Size might be non-standard and may have effect on price";
} else {
newState.remark = "";
}
newState.disableSubmit = true;
newState.itemid = "";
newState.cmtExistingItemRemark = "";
newState.orderCode = "";
this.setState(newState);
}
};
handleDimensionChange (event, values) {
let newState = Object.assign({}, this.state);
if (values && newState.dimemsionValue != values) {
newState.dimemsionValue = values;
if (
newState.dimension.includes(newState.dimemsionValue) === false &&
newState.dimemsionValue.length > 0
) {
newState.remark =
"Size might be non-standard and may have effect on price";
} else {
newState.remark = "";
}
newState.disableSubmit = true;
newState.itemid = "";
newState.cmtExistingItemRemark = "";
newState.orderCode = "";
this.setState(newState);
}
};