Sobes.tech
Junior

React'te props ve durum arasındaki fark nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Props (özellikler) ve durum (state), React bileşenlerinde veri yönetimi için iki temel mekanizmadır.

Props:

  • Ana bileşenden çocuk bileşene aktarılır.
  • Çocuk bileşen içinde değiştirilemez (immutable).
  • Bileşenler arasında etkileşimi sağlar.
  • Giriş verilerine göre bileşenin görünümünü veya davranışını belirler.

Durum:

  • Belirli bir bileşene ait olup, onun tarafından yönetilir.
  • Bileşen içinde değiştirilebilir (mutable).
  • Zamanla değişebilen ve bileşenin render edilmesini etkileyen verileri temsil eder.
  • Durum değişikliği, bileşenin ve alt bileşenlerinin yeniden render edilmesine neden olur.

Başlıca farklar tablo şeklinde sunulabilir:

Özellik Props Durum
Kaynak Ana bileşen Bileşenin kendisi
Değiştirilebilirlik Değiştirilemez (immutable) Değiştirilebilir (mutable)
Yönetim Dışarıdan aktarılır Bileşenin içinde yönetilir
Amaç Dışarıdan veri göstermek, ayar yapmak Bileşenin iç durumunu yönetmek
Değişiklik sonucu Ana bileşende değişiklik olursa yeniden render Mevcut bileşende değişiklik olursa yeniden render

Props kullanımına örnek:

// ParentComponent.jsx
import React from 'react';
import ChildComponent from './ChildComponent';

function ParentComponent() {
  const message = "Merhaba ebeveyn!";
  return (
    <div>
      <ChildComponent text={message} /> {/* "text" prop'unun aktarılması */}
    </div>
  );
}

export default ParentComponent;
// ChildComponent.jsx
import React from 'react';

function ChildComponent(props) {
  return (
    <p>{props.text}</p> {/* "text" prop'unun kullanımı */}
  );
}

export default ChildComponent;

Durum kullanımına örnek:

// Counter.jsx
import React, { useState } from 'react';

function Counter() {
  const [count, setCount] = useState(0); // "count" durumunun başlatılması

  const increment = () => {
    setCount(count + 1); // Durumun değiştirilmesi
  };

  return (
    <div>
      <p>Sayaç: {count}</p>
      <button onClick={increment}>Arttır</button>
    </div>
  );
}

export default Counter;