Свойство 'target' не существует для типа 'string' - PullRequest
0 голосов
/ 17 февраля 2020

Я создаю панель поиска в Typescript, но она не принимает никаких данных. Термин target в моем методе onChange постоянно выдает ошибку:

Property 'target' does not exist on type 'string'.
export default class userSearchPage extends Component <{}, { searchItem: string}>{
  constructor(props: Readonly<{}>) {
    super(props);
    this.state = {
      searchItem: ''
    };
  }

  render() {
    return (

  <div>
    <PermanentDrawerLeft></PermanentDrawerLeft>
    <div className='main-content'>
      <SearchBar
        onChange={e => {
          this.setState({searchItem: e.target.value})
        }}             

        onRequestSearch={() => console.log('onRequestSearch')}
        style={{
          margin: '0 auto',
          maxWidth: 800
        }}
      />
    </div>
  </div>
  );
}
}

Как я могу это исправить?

Ответы [ 2 ]

1 голос
/ 17 февраля 2020

Ваш обратный вызов onChange кажется, что это уже строка. Таким образом, вы можете использовать его напрямую, например

onChange={e => this.setState({searchItem: e}) }  
0 голосов
/ 17 февраля 2020

Я искал ваш SearchBar пользовательский интерфейс материала, и в документации вы можете видеть, что onChange возвращает не событие, а фактическое значение при вводе. Это строка ... отсюда и ошибка.

Я бы также предложил, если вы используете TypeScript для фактического использования типов.

Так, например, ваш onChange должен выглядеть как

onChange={value: string => this.setState({searchItem: value}) }

...