Bagaimanakah Hooks memudahkan pengurusan keadaan dalam React?

Dec 18, 2025

Tinggalkan pesanan

Hey! Sebagai pembekal cangkuk, saya telah melihat secara langsung bagaimana cangkuk telah merevolusikan pengurusan negeri dalam React. Dalam catatan blog ini, saya akan membincangkan cara cangkuk memudahkan pengurusan negeri, menjadikan pembangunan React anda lebih mudah.

mens bathroom accessories setmatte black bathroom accessory set

Cara Lama: Komponen Kelas dan Pengurusan Negeri

Sebelum cangkuk datang, pembangun React bergantung pada komponen kelas untuk mengurus keadaan. Komponen kelas mempunyai aini.negeriobjek di mana anda boleh menyimpan dan mengemas kini data. Sebagai contoh, katakan anda sedang membina apl kaunter mudah. Begini cara anda melakukannya dengan komponen kelas:

import React, { Component } from'react'; class Counter extends Component { constructor(props) { super(props); this.state = { kiraan: 0 }; this.increment = ini.increment.bind(this); } increment() { this.setState({ count: this.state.count + 1 }); } render() { return ( <div> <p>Count: {this.state.count}</p> <button onClick={this.increment}>Increment</button> </div> ); } } eksport Kaunter lalai;

Kod ini berfungsi, tetapi ia mempunyai beberapa isu. Pertama, yangpembinadiperlukan untuk memulakan keadaan, yang boleh menjadi sedikit bertele-tele. Kedua, anda perlu mengikatkenaikankaedah untukinidalam pembina. Ini kerana dalam JavaScript, theinikata kunci di dalam kaedah bergantung pada cara kaedah dipanggil. Jika anda tidak mengikatnya,iniakan menjaditidak ditentukandi dalamkenaikankaedah.

Satu lagi masalah dengan komponen kelas ialah mereka boleh menjadi sukar dibaca dan diselenggara apabila komponen itu berkembang. Contohnya, jika anda mempunyai berbilang pembolehubah keadaan dan kaedah yang mengemas kininya, kod itu boleh menjadi kucar-kacir dengan cepat.

Masukkan Cangkuk: Cara yang Lebih Mudah untuk Mengurus Negeri

Cangkuk diperkenalkan dalam React 16.8 untuk menyelesaikan masalah ini. Cangkuk membolehkan anda menggunakan keadaan dan ciri React yang lain tanpa menulis kelas. Cangkuk yang paling asas ialahuseStatecangkuk, yang membolehkan anda menambah keadaan pada komponen berfungsi. Begini cara anda menulis semula apl kaunter menggunakanuseStatecangkuk:

import React, { useState } from'react'; const Counter = () => { const [count, setCount] = useState(0); kenaikan const = () => { setCount(count + 1); }; return ( <div> <p>Count: {count}</p> <button onClick={increment}>Increment</button> </div> ); }; Kaunter lalai eksport;

Seperti yang anda lihat, kod itu lebih mudah. Tidak perlu apembinaatau untuk mengikat kaedah kepadaini. TheuseStatecangkuk mengembalikan tatasusunan dengan dua elemen: nilai keadaan semasa (mengira) dan fungsi untuk mengemas kininya (setCount). Anda boleh menggunakan pembolehubah ini seperti yang anda akan gunakanini.negeridanthis.setStatedalam komponen kelas.

Bagaimana Hooks Memudahkan Pengurusan Negeri

1. Tiada Lagi Kelas Boilerplate

Dengan cangkuk, anda boleh menggunakan keadaan dalam komponen berfungsi tanpa perlu menulis kelas. Ini bermakna tiada lagipembina,ini, atau pengikatan kaedah. Komponen berfungsi secara amnya lebih mudah dibaca dan ditulis daripada komponen kelas, terutamanya untuk komponen kecil dan ringkas.

2. Lebih mudah untuk Berkongsi Logik

Cangkuk memudahkan untuk berkongsi logik stateful antara komponen. Sebagai contoh, katakan anda mempunyai komponen yang mengambil data daripada API. Anda boleh membuat cangkuk tersuai untuk mengendalikan logik pengambilan data dan menggunakannya semula dalam berbilang komponen. Berikut ialah contoh cangkuk tersuai untuk pengambilan data:

import { useState, useEffect } from'react'; const useFetch = (url) => { const [data, setData] = useState(null); const [loading, setLoading] = useState(true); const [ralat, setError] = useState(null); useEffect(() => { const fetchData = async () => { cuba { const response = tunggu fetch(url); const json = tunggu response.json(); setData(json); } catch (error) { setError(error); } akhirnya { setLoading(false); } }; fetchData(); }, [url] pulangkan { data, memuatkan, ralat }; }; eksport useFetch lalai;

Anda boleh menggunakan cangkuk tersuai ini dalam mana-mana komponen yang perlu mengambil data:

import React from'react'; import useFetch daripada './useFetch'; const MyComponent = () => { const { data, memuatkan, ralat } = useFetch('https://api.example.com/data'); jika (memuatkan) { kembalikan <p>Memuatkan...</p>; } if (error) { return <p>Ralat: {error.message}</p>; } return ( <div> {data && <pre>{JSON.stringify(data, null, 2)}</pre>} </div> ); }; eksport lalai MyComponent;

3. Organisasi Kod yang Lebih Baik

Cangkuk membolehkan anda membahagikan logik komponen anda kepada fungsi yang lebih kecil dan lebih terurus. Sebagai contoh, anda boleh menggunakanuseEffectcangkuk untuk mengendalikan kesan sampingan seperti pengambilan data, langganan atau manipulasi DOM. Anda boleh mempunyai berbilanguseEffectcangkuk dalam satu komponen, masing-masing bertanggungjawab untuk kesan sampingan yang berbeza. Ini menjadikan kod anda lebih modular dan lebih mudah difahami.

Cangkuk Kami: Sangat Sesuai untuk Projek React Anda

Sebagai pembekal cangkuk, kami menawarkan pelbagai jenis cangkuk berkualiti tinggi untuk projek React anda. Sama ada anda sedang mencari cangkuk tuala mudah seperti kamiAksesori Bilik Mandi Cangkuk Tualaatau sesuatu yang lebih bergaya seperti kamiCangkuk Bilik Mandi Emas, kami membantu anda.

Cangkuk kami bukan sahaja berfungsi tetapi juga menarik dari segi estetik, menjadikannya tambahan yang bagus untuk mana-mana bilik mandi. Ia mudah dipasang dan diperbuat daripada bahan tahan lama, memastikan ia akan bertahan selama bertahun-tahun akan datang.

Hubungi Kami untuk Perolehan

Jika anda berminat untuk membeli cangkuk kami untuk projek React anda atau sebarang aplikasi lain, kami ingin mendengar daripada anda. Sama ada anda perniagaan kecil atau syarikat besar, kami boleh menyediakan anda dengan mata kail yang anda perlukan pada harga yang kompetitif.

Hanya hubungi kami, dan pasukan kami dengan senang hati akan membincangkan keperluan anda dan memberikan anda sebut harga. Kami komited untuk menyediakan perkhidmatan pelanggan yang cemerlang dan memastikan anda berpuas hati dengan pembelian anda.

Rujukan

  • Dokumentasi React: https://reactjs.org/docs/hooks-intro.html
  • Rujukan API React Hooks: https://reactjs.org/docs/hooks-reference.html

Hantar pertanyaan