JSX-Elementtyp 'App' ist keine Konstruktorfunktion für JSX-Elemente. Die Eigenschaft 'setState' ist nicht kompatibel

8

Ich verwende den Microsoft TypeScript-React-Starter und habe diesen Kompilierfehler während npm start : %Vor%

Es sieht so aus, als hätte meine setState -Funktion eine falsche Signatur, aber ich bin mir nicht sicher, wie ich sie beheben soll. Hier ist mein Code:

%Vor%

Ich benutze:

%Vor%

Aktualisierung:

Ich habe herausgefunden, dass das Entfernen der generischen Typen <{}, null> den Fehler löscht. Aber ich würde immer noch gerne lernen, warum ich den Fehler bekommen habe.

    
CherryQu 11.07.2017, 02:49
quelle

1 Antwort

11

TLDR; Der Status darf nicht null sein. Deklarieren Sie eine Schnittstelle dafür oder deklarieren Sie {}

Die Antwort liegt in @ types / react

Betrachtet man die Definition , geben weder Staat noch Requisiten an sollen nicht null sein.

Wenn Sie App als class App extends React.Component<{}, null> { deklariert haben, haben Sie im Wesentlichen gesagt: "state is of type null".

Nun hängt der Typ von setState von dem Typ ab, den Sie für state angeben, und er kollidierte mit dem weniger bekannte Version von setState api . prevState wird als {} deklariert (der Standard, da keine Schnittstelle für state angegeben wurde), der nicht mit null kompatibel ist und zu dem Fehlerprotokoll führt, das Sie gesehen haben.

    
Manas Jayanth 11.07.2017, 06:11
quelle

Tags und Links