victorzadorozhnyy
@victorzadorozhnyy

Как задать тип для input react-bootstrap TypeScript?

В чем разница между обычным input и FormControl react-rootstrap?
Не могу задать типизацию для event
class Search extends Component<Props, { searchInput: string }> {
  static defaultProps = {}

  state = {
    searchInput: ""
  }

 // Работает для обычного input 
  searchInputSimple = (e: React.FormEvent<HTMLInputElement>): void => {
    const { getSearch } = this.props
    this.setState(
      { searchInput: e.currentTarget.value },
      (): void => getSearch(this.state.searchInput)
    )
  }

  // Нудно использовать с FormControl. Что поставить вместо any?
  searchInput = (e: React.FormEvent<any>): void => {
    const { getSearch } = this.props
    this.setState(
      { searchInput: e.currentTarget.value },
      (): void => getSearch(this.state.searchInput)
    )
  }

  render() {
    const { searchInput } = this.state
    return (
      <>
        <InputGroup className="mb-3">
          <FormControl placeholder="Search" value={searchInput} onChange={this.searchInput} />
        </InputGroup>

        <input
          placeholder="Search"
          value={searchInput}
          onChange={this.searchInputSimple}
          className="form-control"
        />
      </>
    )
  }
}

Если посмотреть для FormControl.d.ts
import Feedback from './Feedback';

import { BsPrefixComponent } from './helpers';

interface FormControlProps {
  innerRef?: React.LegacyRef<this>;
  size?: 'sm' | 'lg';
  plaintext?: boolean;
  readOnly?: boolean;
  disabled?: boolean;
  value?: string;
  onChange?: React.FormEventHandler<this>;
  type?: string;
  id?: string;
  isValid?: boolean;
  isInvalid?: boolean;
}

declare class Form<
  As extends React.ReactType = 'input'
> extends BsPrefixComponent<As, FormControlProps> {
  static Feedback: typeof Feedback;
}

Как из этого понять что за тип передавать в searchInput?
  • Вопрос задан
  • 646 просмотров
Пригласить эксперта
Ответы на вопрос 1
FormEvent имеет следующий тип:
interface FormEvent<T = Element> extends SyntheticEvent<T> {}


Попробуйте подставить FormControl
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы