В вашем методе onChange
вместе с newValue
вам также передается method
, который вызвал изменение.См. Документацию здесь .
Это означает, что вы можете проверить, чтобы вы обновляли состояние (которое используется для определения того, какое значение будет отображаться), когда пользователь печатает, нажимает или нажимаетвойти.Другими словами, мы игнорируем изменения, которые происходят из-за повышающих или понижающих нажатий.
Таким образом, ваш пример можно изменить (около строки 155), чтобы он был
const handleChange = name => (event, { newValue, method }) => {
const shouldUpdateSelectedValue = method === "type" || method === "enter" || method === "click";
shouldUpdateSelectedValue && setState({
...state,
[name]: newValue,
});
};
Измененная версияВаш код доступен здесь: https://codesandbox.io/s/material-demo-hcmzl