Bagaimana untuk membetulkan ralat skrip taip apabila menetapkan keadaan kepada keadaan sebelumnya dalam React?
P粉520545753
P粉520545753 2024-02-03 22:41:43
0
1
365

Saya takrifkan status ini

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

Di suatu tempat dalam penggunaan sayaEffect saya cuba menetapkannya berdasarkan keadaan sebelumnya.

Jadi lakukan ini

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

Tetapi ia gagal dengan ralat berikut

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

Apa yang lebih pelik ialah saya mengemas kini kod untuk kembali ke keadaan sebelumnya. Secara asasnya begini

setUserInfo((prevState) => return prevState)

Operasi ini gagal dengan ralat yang sama!

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

Sejujurnya, saya fikir ini akan berkesan. Saya mendapat keadaan sebelumnya dan mengembalikannya, tetapi ini tidak dikompilasi.

Jika saya melumpuhkan semakan dan menjalankan apl ia berfungsi seperti yang diharapkan, jadi ini kelihatan seperti isu skrip taip.

Ada idea bagaimana untuk menyelesaikan masalah ini?

P粉520545753
P粉520545753

membalas semua(1)
P粉770375450

Anda boleh menukar nilai pulangan kepada UserInfo.

setUserInfo(
  (prevState) => {
    return {
      ...prevState,
      ...someRef.current
    } as UserInfo;
  }
);
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan