javascript - Typen 'void' kan inte tilldelas typen '((event: ChangeEvent) => void) React TypeScript'


Jag är nybörjare i React TypeScript, och jag har definierat några props i en .JS-fil som jag vill använda i en .tsx-fil. men jag får detta fel på en av mina TypeScript-rader:

 <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 innehåller både min JS-fil och TSX-fil: https://codesandbox.io/s/tsx-rj694

Vad verkar vara problemet och hur kan jag skriva detta korrekt?

Svar #1

Jag antar att du inte skickar händelseobjektet till handleChange-metoden.

Så här bör du ändra din onChange-händelsehanterare:

onChange={() => handleChange('ActivationDate')}

För din information, om du behöver få åtkomst till händelseobjektet i onChange-anropet, måste du uttryckligen ange rätt typer.

onChange={handleChange}

Och när du definierar funktionen,

const handleChange = (event: ChangeEvent<HTMLInputElement>) => {
  // do the rest here
}

Svar #2

onChange={(e: React.ChangeEvent<HTMLInputElement>): void => handleChange(e.target.value)}

Relaterade artiklar