Rumah > Soal Jawab > teks badan
P粉7295188062023-08-18 14:21:45
Tentukan keadaan untuk cangkuk itu sendiri, bukan untuk fungsi di dalam cangkuk. Contohnya:
export const useHero = (initialHero) => { const [hero, setHero] = useState(initialHero); const UpdateHero = (newHero) => { setHero(newHero); }; return { UpdateHero }; }
Selain itu, sila ambil perhatian perbezaan antara initialHero
和newHero
di sini. Yang pertama digunakan untuk memulakan nilai keadaan pertama apabila cangkuk pertama kali dipanggil:
const { UpdateHero } = useHero(someValueHere);
Dan yang terakhir digunakan untuk mengemas kininya kepada nilai baharu apabila memanggil UpdateHero
:
<button class="active" onClick={() => UpdateHero(hero)}>
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 mengembalikan setHero
. 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:
export const useHero = (initialHero) => { const [hero, UpdateHero] = useState(initialHero); return { hero, UpdateHero }; }