Tajuk ditulis semula sebagai: Pembolehubah tidak dikemas kini apabila menggunakan cangkuk useState().
P粉066224086
P粉066224086 2023-09-10 18:43:16
0
1
497

Saya sedang mengusahakan projek rangkaian sosial menggunakan React.

Saya ingin menggantikan komponen daripada komponen kelas kepada komponen fungsi dan menggunakan cangkuk, maka masalah global timbul:

Apabila saya bertukar kepada pengguna baharu, halaman tersebut menunjukkan status pengguna sebelumnya

Saya menggunakan cangkuk useState(), menyahpepijat semuanya, tetapi atas sebab tertentu apabila komponen keadaan baharu dipaparkan, ia tidak dikemas kini

const ProfileStatus = (props) => {
  const [edditMode, setEdditMode] = useState(false);
  const [status, setValue] = useState(props.status || "Empty");

  const onInputChange = (e) => {
    setValue(e.target.value);
  };
  const activateMode = () => {
    setEdditMode(true);
  };
  const deactivateMode = () => {
    setEdditMode(false);
    props.updateUserStatus(status);
  };

Saya fikir masalahnya ialah komponen kontena masih merupakan komponen kelas, tetapi selepas dibuat semula, tiada apa yang berubah.

P粉066224086
P粉066224086

membalas semua(1)
P粉674876385

Satu penyelesaian ialah menggunakan useEffectcangkuk untuk mencetuskan kemas kini apabila sifat berubah. Anda boleh menggunakan cangkuk ini untuk membandingkan sifat semasa dan sebelumnya dan kemudian mengemas kini keadaan dalam keadaan.

Anda boleh menggunakan ini sebagai rujukan dan membuat pelarasan berdasarkan kod anda sendiri.

const ProfileStatus = (props) => {
  const [edditMode, setEdditMode] = useState(false);
  const [status, setValue] = useState(props.status || "Empty");

  useEffect(() => {
    setValue(props.status || "Empty");
  }, [props.status]);

  const onInputChange = (e) => {
    setValue(e.target.value);
  };
  const activateMode = () => {
    setEdditMode(true);
  };
  const deactivateMode = () => {
    setEdditMode(false);
    props.updateUserStatus(status);
  };
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!