reactjs - React useState tom array typ
interface Crumb {
title: string;
url: string;
}
interface Crumbies {
crumbsArray: Crumb[];
}
// component
const [breadcrumbs, setBreadcrumbs] = useState<Crumbies>([]);
Jag får ett fel:
TS2345: Argument of type 'never[]' is not assignable to parameter of type 'Crumbies | (() => Crumbies)'. Type 'never[]' is not assignable to type '() => Crumbies'. Type 'never[]' provides no match for the signature '(): Crumbies'.
Hur man tillhandahåller korrekt typning för en tom array i useState-hook?
UPPDATERING 1
const Breadcrumbs: React.FC<Crumbies> = ({ crumbsArray }) => {}
Det är därför jag har skapat ett annat gränssnitt Crumbies för att omsluta Crumb. Finns det ett bättre tillvägagångssätt för detta?
Svar #1
Gränssnittet som kallas Crumbies kräver att du skickar ett objekt med ett fält crumbsArray:
const [breadcrumbs, setBreadcrumbs] = useState<Crumbies>({crumbsArray: []});
Om du helt enkelt vill ha en array av Crumb behöver du inte skapa ett nytt gränssnitt, du kan enkelt göra det i useState:
const [breadcrumbs, setBreadcrumbs] = useState<Crumb[]>([]);
Detta kommer att initialisera det med en tom array.
