javascript - Tekst i JSX har typen 'string', men den forventede typen for 'children' er 'string | Element | Element[]'
Jeg har en tilpasset React-knappekomponent som jeg ønsker skal kunne ta valgfrie strenger med eller uten valgfrie ikoner (JSX.Element) som barn.
Mitt grensesnitt ser slik ut
interface IUploadFileButtonProps {
children: string | JSX.Element | JSX.Element[];
}
Og implementeringen:
// Does not work
<UploadFileButton>
<FaUpload />
Add new list
</UploadFileButton>
// Works
<UploadFileButton>
No icon, just text
</UploadFileButton>
// Works
<UploadFileButton>
<FaUpload />
</UploadFileButton>
// Works
<UploadFileButton>
<FaUpload />
<FaUpload />
</UploadFileButton>
Jeg får denne feilmeldingen:
Tekst i JSX har typen 'string', men den forventede typen for 'children' er 'string | Element | Element[]'
Som jeg antar er fordi Typescript forventer én av typene, men ikke mer enn én type om gangen.
Hvordan kan jeg spesifisere en valgfri streng og/eller valgfri JSX.Element som en type (hvis det gir mening)?
Jeg kunne hoppe av og bruke any, men jeg vil vite den riktige typingen for dette scenariet.
Svar #1
Du kan bruke React.ReactNode for å typisere children-arrayen, hvorfor definerer du din egen?
interface IUploadFileButtonProps {
children: React.ReactNode;
}
