cari

Rumah  >  Soal Jawab  >  teks badan

Bagaimana untuk membetulkan ralat skrip taip apabila menetapkan keadaan kepada keadaan sebelumnya dalam React?

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粉520545753P粉520545753352 hari yang lalu436

membalas semua(1)saya akan balas

  • P粉770375450

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

    Anda boleh menukar nilai pulangan kepada UserInfo.

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

    balas
    0
  • Batalbalas