Выбор пользовательского интерфейса в Typescript - PullRequest
0 голосов
/ 04 марта 2020

Я создал раскрывающееся меню, используя Выбор материала. Там написано "Поиск по". Когда мы нажимаем на него, он дает нам список. Когда я выбираю один из параметров, я хочу сохранить параметр и изменить «Поиск по» на выбранный параметр.

export default function UserSearchPage(){
  const [criteria, setCriteria] = useState('');
  const [searchItem, setSearchItem] = useState('');
  return (
    <div>
      <div className='main-content'>
        <Select 
          value = {criteria}
          onChange={
            value => { setCriteria(value);}
          }
          displayEmpty
        >
          <MenuItem disabled value="">
            <em>Search By</em>
          </MenuItem>
          <MenuItem value={1}>First Name</MenuItem>
          <MenuItem value={2}>Last Name</MenuItem>
          <MenuItem value={3}>Phone Number</MenuItem>
          <MenuItem value={4}>Email</MenuItem>
        </Select>
      </div>
    )
    </div>
  );
}

В настоящее время onChange выдает мне эту ошибку при значении:

Argument of type 'ChangeEvent<{ name?: string | undefined; value: unknown; }>' is not assignable to parameter of type 'SetStateAction<string>'.
  Type 'ChangeEvent<{ name?: string | undefined; value: unknown; }>' is not assignable to type '(prevState: string) => string'.

и если я использую это:

onChange={event => setCriteria(event.target.value)}

я получу:

Argument of type 'unknown' is not assignable to parameter of type 'SetStateAction<string>'.
  Type 'unknown' is not assignable to type '(prevState: string) => string'.

Ответы [ 2 ]

3 голосов
/ 06 марта 2020

Вы должны подтвердить введенные значения unknown перед их использованием. Если вы уверены, что значения из событий onChange всегда будут строками, тогда вы можете сделать onChange={event => setCriteria(event.target.value as string)}, и компилятор больше не будет жаловаться.

1 голос
/ 04 марта 2020

определяет тип аргумента вашего события. Так было бы

onChange={event:React.ChangeEvent<{ value: unknown }> => setCriteria(event.target.value)}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...