javascript - Tipul 'void' nu poate fi atribuit tipului '((event: ChangeEvent) => void) React TypeScript
Sunt începător în React TypeScript și am definit niște props într-un fișier .JS pe care vreau să le folosesc într-un fișier .tsx. dar primesc această eroare pe una dintre liniile mele TypeScript:
<MyTextField style={{width:'60%'}} name='ActivationDate' type='date' defaultValue={values1.ActivationDate} onChange={handleChange('ActivationDate')}/>
Type 'void' is not assignable to type '((event: ChangeEvent<HTMLInputElement>) => void) | ((event: ChangeEvent<HTMLSelectElement>) => void) | ((event: ChangeEvent<HTMLTextAreaElement>) => void) | undefined'.
CodeSandbox conține atât fișierul meu JS, cât și fișierul meu TSX: https://codesandbox.io/s/tsx-rj694
care pare să fie problema și cum pot să scriu asta corect?
Răspuns #1
Presupun că nu transmiteți obiectul eveniment în metoda handleChange.
Așa ar trebui să modificați handler-ul evenimentului onChange:
onChange={() => handleChange('ActivationDate')}
Pentru informarea dumneavoastră, dacă trebuie să accesați obiectul eveniment în apelul onChange, va trebui să specificați explicit tipurile corecte.
onChange={handleChange}
Și când definești funcția,
const handleChange = (event: ChangeEvent<HTMLInputElement>) => {
// do the rest here
}
Răspunsul #2
onChange={(e: React.ChangeEvent<HTMLInputElement>): void => handleChange(e.target.value)}
