Получить 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

Другие вопросы по тегам