Получить HTMLInputElement из ref в InputText PrimeReact
Я пытаюсь использовать ссылку, чтобы добраться до базового элемента ввода компонента InputText. я использовал this.textFieldRef = React.createRef()
установить ссылку, а затем атрибут ref={this.textFieldRef}
подключить это. Еще в componentDidMount
Я не могу использовать this.textFieldRef.current.select()
так как select()
это не функция, доступная для этого объекта. Так или иначе, InputText не возвращает базовый HTMLInputElement.
Кто-нибудь знает, как я могу получить от ссылки на то, что позволяет мне select()
текст в элементе InputText?
Вот мой код, который на самом деле в TypeScript...
import * as React from 'react';
import { InputText } from 'primereact/inputtext';
export class ValueCard extends React.Component<{}, {}> {
textFieldRef: React.RefObject<any> = React.createRef();
componentDidMount = () => {
if (this.textFieldRef.current instanceof InputText) {
this.textFieldRef.current.select();
}
}
render() {
return = (
<InputText
value="test"
ref={this.textFieldRef}
/>
);
}
}
1 ответ
Может быть, вы могли бы попробовать использовать react-dom
библиотека:
ReactDOM.findDOMNode(this.textFieldRef.current).querySelector('input');
Глядя на источник для PrimeReact's InputText
компонент ( источник), они прикрепляют ссылку на внутренний input
элемент к this.element
, Это позволяет вам просто добавить .element
к вашей ссылке:
this.textFieldRef.current.element.select();
Я проверил это в этой песочнице, и это, кажется, работает как ожидалось: https://codesandbox.io/s/203k7vx26j