Я рендерил некоторые текстовые поля материала-интерфейса. Если вручную ввести значение внутри него, оно будет работать правильно. Он использует handleChange () (change) и handleBlur () (autosave) для обработки этих событий. но сценарий заключается в том, что мне нужно обновить значение не вручную, а из магазина.
Итак, если я передаю значение из магазина, оно фактически не обновляет значение, если я не щелкну внутри поля и щелкните или выберите вкладку. значение отображается внутри поля, но не вызывает handleChange () и handleBlur (), которые являются единственным способом обновления значения внутри. Также мне нужно набрать хотя бы значение.
Подход:
Я устанавливаю onFocus в поле и на его handleFocus я пытаюсь либо симулировать click () и blur () или вызывая handleClick () и handleBlur (). Если я имитирую событие щелчка,
Uncaught TypeError: element.click не является функцией
Если я пытаюсь вызвать handleChange () и handleBlur ()
readonly refO: React.RefObject<HTMLInputElement>;
constructor(props: InputProps) {
super(props);
this.refO = React.createRef<HTMLInputElement>();
}
...
<TextField
autoFocus
inputRef={this.refO}
id={this.labelId}
required={required}
label={label}
error={error}
value={this.setValue()}
onBlur={handleBlur}
onChange={handleChange}
disabled={disabled}
fullWidth
type={type}
InputLabelProps={InputLabelProps}
InputProps={{ className: cx({ [classes.modified]: isModified }) }}
onFocus={this.handleFocus}
/>
Что можно сделать внутри handleFocus () для достижения этой цели. или правильный подход для достижения этого. Я очень новичок в TypeScript. мой подход неправильный или любой другой способ преодолеть это.
handleFocus = (element: HTMLInputElement) => {
element.click();
this.props.handleChange();
this.props.handleBlur();
}
PS: не могу добавить больше кода из-за некоторых проблем с чувствительностью.