Sobes.tech
Junior

Wat is het verschil tussen props en state in React?

sobes.tech AI

Antwoord van AI

Props (eigenschappen) en staat (state) zijn twee belangrijke mechanismen voor het beheren van gegevens in React-componenten.

Props:

  • Worden doorgegeven van de oudercomponent aan de kindcomponent.
  • Zijn onveranderlijk (immutable) binnen de kindcomponent.
  • Stellen interactie tussen componenten mogelijk.
  • Bepalen de uitstraling of het gedrag van de component op basis van invoergegevens.

Staat:

  • Behoort tot een specifieke component en wordt door deze beheerd.
  • Is wijzigbaar (mutable) binnen de component.
  • Vertegenwoordigt gegevens die in de loop van de tijd kunnen veranderen en de rendering van de component beïnvloeden.
  • Het wijzigen van de staat zorgt voor een her-rendering van de component en zijn kinderen.

De belangrijkste verschillen kunnen worden gepresenteerd in tabelvorm:

Kenmerk Props Staat
Bron Oudere component De eigen component
Wijzigbaarheid Onveranderlijk (immutable) Wijzigbaar (mutable)
Beheer Wordt van buitenaf doorgegeven Wordt binnen de component beheerd
Doel Externe gegevens tonen, configuratie Beheer van de interne staat
Verandert leidt tot Her-rendering bij wijziging in ouder Her-rendering bij wijziging in huidige component

Voorbeeld van gebruik van props:

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

function ParentComponent() {
  const message = "Hallo van de ouder!";
  return (
    <div>
      <ChildComponent text={message} /> {/* Overdracht van prop "text" */}
    </div>
  );
}

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

function ChildComponent(props) {
  return (
    <p>{props.text}</p> {/* Gebruik van prop "text" */}
  );
}

export default ChildComponent;

Voorbeeld van gebruik van staat:

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

function Counter() {
  const [count, setCount] = useState(0); // Initialisatie van de staat "count"

  const increment = () => {
    setCount(count + 1); // Verandering van de staat
  };

  return (
    <div>
      <p>Tel: {count}</p>
      <button onClick={increment}>Verhoog</button>
    </div>
  );
}

export default Counter;