suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Wie kann ein Typoskriptfehler behoben werden, wenn der Status in React auf den vorherigen Status gesetzt wird?

Ich habe diesen Status definiert

const [userInfo, setUserInfo] = React.useState<UserInfo | undefined>()

Irgendwo in meinem useEffect versuche ich es basierend auf dem vorherigen Zustand festzulegen.

Also mach das

setUserInfo(
                          (prevState) => {
                          return {
                              ...prevState,
                              ...someRef.current
                          }
                      })

Aber es schlägt mit dem folgenden Fehler fehl

Type error: Argument of type '(prevState: any) => any' is not assignable to parameter of type 'UserInfo'.
  Type '(prevState: any) => any' is missing the following properties from type 'UserInfo': name, age, gender

Was noch seltsamer ist, ist, dass ich den Code aktualisiert habe, um zum vorherigen Zustand zurückzukehren. Im Grunde ist es das

setUserInfo((prevState) => return prevState)

Dieser Vorgang schlägt mit demselben Fehler fehl!

Type error: Argument of type '(prevState: any) => any' is not assignable to parameter of type 'UserInfo'.
  Type '(prevState: any) => any' is missing the following properties from type 'UserInfo': name, age, gender

Ich glaube ehrlich gesagt, dass das funktionieren wird. Ich erhalte den vorherigen Status und gebe ihn zurück, aber das wird nicht kompiliert.

Wenn ich die Prüfung deaktiviere und die App ausführe, funktioniert sie wie erwartet, es sieht also nach einem Typoskript-Problem aus.

Irgendwelche Ideen, wie man dieses Problem lösen kann?

P粉520545753P粉520545753375 Tage vor453

Antworte allen(1)Ich werde antworten

  • P粉770375450

    P粉7703754502024-02-04 14:04:52

    您可以将返回值转换为 UserInfo。

    setUserInfo(
      (prevState) => {
        return {
          ...prevState,
          ...someRef.current
        } as UserInfo;
      }
    );

    Antwort
    0
  • StornierenAntwort