Comment corriger une erreur dactylographiée lors de la définition de l'état sur l'état précédent dans React ?
P粉520545753
P粉520545753 2024-02-03 22:41:43
0
1
376

J'ai défini ce statut

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

Quelque part dans mon useEffect, j'essaie de le définir en fonction de l'état précédent.

Alors fais ça

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

Mais il échoue avec l'erreur suivante

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

Ce qui est encore plus bizarre, c'est que j'ai mis à jour le code pour revenir à l'état précédent. En gros, c'est ça

setUserInfo((prevState) => return prevState)

Cette opération échoue avec la même erreur !

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

Je pense honnêtement que cela fonctionnera. J'obtiens l'état précédent et je le renvoie, mais cela ne se compile pas.

Si je désactive la vérification et exécute l'application, cela fonctionne comme prévu, cela ressemble donc à un problème de dactylographie.

Des idées sur la façon de résoudre ce problème ?

P粉520545753
P粉520545753

répondre à tous(1)
P粉770375450

Vous pouvez convertir la valeur de retour en UserInfo.

setUserInfo(
  (prevState) => {
    return {
      ...prevState,
      ...someRef.current
    } as UserInfo;
  }
);
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal