Sınıf bileşenlerindeki durum ile useState kancası arasındaki fark nedir?

Dec 15, 2025

Mesaj bırakın

React geliştirmenin dinamik dünyasında, farklı durum yönetimi teknikleri arasındaki nüansları anlamak çok önemlidir. Bir kanca tedarikçisi olarak, React'te durum yönetiminin geleneksel sınıf bileşenlerinden daha modern useState kancasına kadar evrimine ilk elden tanık oldum. Bu blog, sınıf içi durum bileşenleri ile useState kancası arasındaki farkları inceleyerek geliştiricilerin bilinçli kararlar almasına yardımcı olabilecek bilgiler sunacak.

Sınıf Bileşenlerinde Durum: Geleneksel Bir Yaklaşım

React'taki sınıf bileşenleri, durumu yönetmek için uzun süredir başvurulan yöntem olmuştur. Bir sınıf bileşeninde durum, yapıcıda başlatılan bir örnek değişkendir. Aşağıdaki örneği düşünün:

React'ı içe aktar, { Component } from'react'; class CounterClass extends Bileşen { yapıcı(destekler) { süper(destekler); this.durum = { sayım: 0 }; } artış = () => { this.setState({ count: this.state.count + 1 }); } render() { return ( <div> <p>Sayı: {this.state.count</p> <button onClick={this.increment}>Artış</button> </div> ); } } varsayılan CounterClass'ı dışa aktar;

Bu kodda adında bir sınıf bileşeni oluşturuyoruz.Karşı Sınıf. Durum yapıcıda bir ile başlatılırsaymaközellik 0 olarak ayarlandı. Durumu güncellemek için şunu kullanırız:this.setStateyöntem. Bu yöntem eşzamansızdır ve React, performans nedenleriyle birden fazla durum güncellemesini toplu olarak işler.

Sınıf bileşenlerindeki durumun temel özelliklerinden biri, onun bir nesne olmasıdır. Bu, ilgili verileri birlikte gruplandırmamıza olanak tanır. Örneğin, bir form bileşeni oluşturuyor olsaydık, her form alanı için özelliklere sahip bir durum nesnesine sahip olabilirdik:

React'ı içe aktar, { Component } from'react'; class FormClass extends Bileşen { yapıcı(destek) { süper(destek); this.state = { isim: '', e-posta: '' }; } tanıtıcıAdıDeğiştir = (e) => { this.setState({ name: e.target.value }); } tanıtıcıEmailChange = (e) => { this.setState({ e-posta: e.target.value }); } render() { return ( <form> <input type="text" placeholder="Name" value={this.state.name} onChange={this.handleNameChange} /> <input type="email" placeholder="Email" value={this.state.email} onChange={this.handleEmailChange} /> </form> ); } } varsayılan FormClass'ı dışa aktar;

Ancak sınıf bileşenlerinin bazı dezavantajları da vardır. Kod, özellikle karmaşık durum mantığıyla uğraşırken ayrıntılı hale gelebilir.Buanahtar kelime kafa karıştırıcı olabilir ve JavaScript'in iyi anlaşılmasını gerektirir.Bubağlayıcı kurallar

UseState Hook: Modern Bir Alternatif

UseState kancası, Hooks API'sinin bir parçası olarak React 16.8'de tanıtıldı. İşlevsel bileşenlerde durumu yönetmek için daha kısa ve işlevsel bir yol sağlar. Tekrar yazalımKarşı SınıfuseState kancasını kullanan bileşen:

React'ı içe aktar, { useState } from'react'; const CounterHook = () => { const [count, setCount] = useState(0); const artış = () => { setCount(count + 1); } return ( <div> <p>Sayı: {count</p> <button onClick={increment}>Artış</button> </div> ); } varsayılan CounterHook'u dışa aktar;

Bu kodda şunu kullanıyoruz:Kullanım Durumudurum değişkeni oluşturmak için kancasaymakve bir fonksiyonsetCountGüncellemek için.Kullanım Durumuhook argüman olarak bir başlangıç ​​değeri alır (bu durumda 0). Sınıf bileşenlerindeki durumun aksine, sınıf bileşenleri tarafından yönetilen durumKullanım Durumuhook yalnızca bir nesne değil, herhangi bir veri türünde olabilir.

Form örneği için birden fazla kullanabilirizKullanım Durumukancalar:

React'ı içe aktar, { useState } from'react'; const FormHook = () => { const [isim, setAd] = useState(''); const [e-posta, setEmail] = useState(''); const tanıtıcıAdıDeğiştir = (e) => { setName(e.target.value); } const tanıtıcıEmailChange = (e) => { setEmail(e.target.value); } return ( <form> <input type="text" placeholder="Name" value={name} onChange={handleNameChange} /> <input type="email" placeholder="Email" value={email} onChange={handleEmailChange} /> </form> ); } varsayılan FormHook'u dışa aktar;

UseState kancası çeşitli avantajlar sunar. Kodu daha kısa ve okunması kolay hale getirir. Fonksiyonel bileşenlerde kullanıldığı için herhangi bir sorunla uğraşmaya gerek kalmaz.Buanahtar kelime. Ayrıca, daha öngörülebilir ve test edilebilir kodlara yol açabilecek daha işlevsel bir programlama stilini destekler.

Temel Farklılıklar

Sözdizimi ve Okunabilirlik

UseState kancasının sözdizimi, sınıf bileşenlerine kıyasla çok daha kısadır. Sınıf bileşenlerinde bir kurucu tanımlamamız, durumu başlatmamız ve kullanmamız gerekir.Buanahtar kelime. UseState kancasıyla durumu, işlevsel bir bileşen içindeki tek bir kod satırında yönetebiliriz. Bu, özellikle yeni geliştiriciler için kodun anlaşılmasını kolaylaştırır.

Durum Başlatma

Sınıf bileşenlerinde durum yapıcıda başlatılır. Başlangıç ​​durumu desteklere bağlıysa, yapıcının içinde hesaplamalar yapmamız gerekir. UseState kancasıyla bir fonksiyonu başlangıç ​​değeri olarak iletebiliriz. Bu işlev yalnızca ilk oluşturma sırasında çağrılacaktır; bu, pahalı hesaplamalar için faydalı olabilir:

const [value, setValue] = useState(() => { // Burada pahalı hesaplamalar gerçekleştirin return someExpensiveCalculation(); });

Durum Güncellemeleri

Sınıf bileşenlerinde,this.setStateyöntem eşzamansızdır ve React birden fazla durum güncellemesini toplu olarak işler. Önceki duruma göre durumu güncellerken, bir işlevi aktarmamız gerekir.this.setState:

this.setState((prevState) => { return { count: prevState.count + 1 }; });

UseState kancasıyla, durumu önceki duruma göre güncellememiz gerektiğinde, durum güncelleme işlevine de bir işlev aktarabiliriz:

setCount((prevCount) => prevCount + 1);

Bileşen Yaşam Döngüsü

Sınıf bileşenleri, aşağıdaki gibi yöntemlerle iyi tanımlanmış bir yaşam döngüsüne sahiptir:bileşenDidMount,bileşenDidUpdate, VebileşenWillUnmount. Sınıf bileşenlerindeki yan etkileri yönetmek karmaşık olabilir. UseState kancası, işlevsel bileşenlerdeki yan etkileri ele almak için sıklıkla useEffect kancasıyla birlikte kullanılır. useEffect kancası, yan etkileri yönetmek için daha esnek ve sezgisel bir yol sağlar.

new england bathroom accessoriesnew design bathroom accessories

Uygulamalar ve Kullanım Durumları

Basit Durum Yönetimi

Bir boole değerini değiştirmek veya bir sayacı artırmak gibi basit durum yönetimi görevleri için useState kancası mükemmel bir seçimdir. Basitliği ve okunabilirliği onu küçük ölçekli uygulamalar veya bileşenler için ideal kılar.

Karmaşık Durum Mantığı

Birden fazla ilgili veri noktasını içeren karmaşık durum mantığımızın olduğu durumlarda sınıf bileşenleri yine de yararlı olabilir. Sınıf bileşenlerindeki durum bir nesne olduğundan, ilgili verileri gruplamak ve karmaşık güncellemeleri yönetmek daha kolaydır. Bununla birlikte, çoklu useState kancalarının ve özel kancaların kullanımıyla, işlevsel bileşenlerdeki karmaşık durumu da işleyebiliriz.

Çözüm

Bir kanca tedarikçisi olarak geliştiricilere durum yönetimi için doğru araçları sağlamanın önemini anlıyorum. Hem sınıf içi durum bileşenleri hem de useState kancasının kendi güçlü ve zayıf yönleri vardır. Aralarındaki seçim projenin özel gereksinimlerine, durum mantığının karmaşıklığına ve geliştiricinin tercihine bağlıdır.

React projeleriniz için yüksek kaliteli kancalar arıyorsanız, ister durum yönetimi ister başka amaçlar için olsun, size yardımcı olmak için buradayız. Uygulamalarınızın performansını ve işlevselliğini artırabilecek geniş bir kanca yelpazesi sunuyoruz. Aşağıdakiler de dahil olmak üzere ürün yelpazemizi keşfedebilirsiniz:Altın Banyo KancalarıVeBanyo Aksesuarları Havlu Kancalarımodern web geliştirmenin çeşitli ihtiyaçlarını karşılamak üzere tasarlanmıştır.

Ürünlerimiz ve hizmetlerimizle ilgileniyorsanız, satın alma ve daha fazla görüşme için lütfen bizimle iletişime geçmekten çekinmeyin. Müşterilerimize mükemmel destek ve çözümler sunmaya kararlıyız.

Referanslar

  • React Resmi Belgeleri
  • React Hooks API Referansı
  • JavaScript: Kesin Kılavuz, David Flanagan

Soruşturma göndermek