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.

Relaterade artiklar