Dalam ReactJS, bagaimana untuk mengemas kini nilai useState daripada fail berasingan?
P粉237029457
2023-08-17 19:46:21
<p>Saya cuba mengakses dan mengemas kini keadaan objek daripada dua fail berbeza, jika saya menggunakan useState setempat untuk setiap fail maka saya boleh menukarnya, tetapi itu tidak berfungsi, </p>
<p>Saya mencuba pelbagai penyelesaian yang berbeza, menggunakan cangkuk tersuai dan keadaan setempat tetapi tiada satu pun daripada mereka menyelesaikan masalah saya, saya terperangkap dalam isu ini selama kira-kira 5 jam dan ia benar-benar membuatkan saya gila, sebarang bantuan akan dihargai Hebat. </p>
<p>Saya rasa masalahnya ialah saya cuba memanggil cangkuk dari pernyataan pulangan, tetapi saya tidak dapat memikirkan sebarang cara alternatif untuk melakukannya, kerana di situlah ia dipaparkan. </p>
<p>maklumat.js:</p>
<pre class="brush:php;toolbar:false;"><button class="active" onClick={() => useSetHero(hero)}></pre>
<p>hero.js:</p>
<pre class="brush:php;toolbar:false;">export const useSetHero = (newHero) =>
const UpdateHero = () =>
const [wira, setHero] = useState(newHero);
setHero(newHero);
};
kembali { UpdateHero };
}</pre>
<p>Mesej ralat yang saya terima sekarang ialah:
React Hook "useHero" tidak boleh dipanggil dalam fungsi panggil balik. React Hooks mesti dipanggil dalam komponen fungsi React atau fungsi React Hook tersuai</p>
Tentukan keadaan untuk cangkuk itu sendiri, bukan untuk fungsi di dalam cangkuk. Contohnya:
Selain itu, sila ambil perhatian perbezaan antara
initialHero
和newHero
di sini. Yang pertama digunakan untuk memulakan nilai keadaan pertama apabila cangkuk pertama kali dipanggil:Dan yang terakhir digunakan untuk mengemas kininya kepada nilai baharu apabila memanggil
UpdateHero
:Sila ambil perhatian bahawa dalam kod di atas anda tidak memanggil cangkuk secara langsung dalam markup. Cangkuk dipanggil awal dalam komponen (dan cangkuk yang sama dipanggil dalam susunan yang sama pada setiap render). Data dan/atau fungsi yang dikembalikan oleh cangkuk kemudiannya boleh digunakan kemudian.
Beberapa nota:
hero
. Saya rasa cangkuk juga harus mengembalikan nilai itu supaya ia boleh digunakan.UpdateHero
在这里是多余的,您可以直接返回setHero
Ini berlebihan di sini, anda hanya boleh mengembalikansetHero
.Saya mengandaikan kedua-dua soalan ini adalah kerana ini hanyalah contoh yang sangat ringkas tentang perkara yang anda cuba lakukan, cangkuk sebenar adalah lebih kompleks daripada ini. Walau bagaimanapun, jika isu ini tidak dipertimbangkan, cangkuk di atas boleh dipermudahkan kepada: