Sobes.tech
Junior

У чему се разликују props и стање у React-у?

sobes.tech АИ

Одговор од АИ

Пропси (props) и стање (state) су два кључна механизма за управљање подацима у React компонентама.

Пропси:

  • Преносе се од родитељске до дечије компоненте.
  • Јесу неизменљиви (immutable) унутар дечије компоненте.
  • Омогућавају компонентама да комуницирају међусобно.
  • Одређују изглед или понашање компоненте на основу улазних података.

Стање:

  • Припада одређеној компоненти и управља њиме.
  • Је променљиво (mutable) унутар компоненте.
  • Представља податке који могу да се мењају током времена и утичу на рендеровање компоненте.
  • Промена стања изазива поновно рендеровање компоненте и њених потомака.

Основне разлике могу се представити у виду табеле:

Карактеристика Пропси Стање
Извор Родитељска компонента Самa компонента
Променљивост Неизменљиви Променљиво
Управљање Преносе се споља Управља се унутар компоненте
Намена Приказ података споља, подешавање Управљање унутрашњим стањем компоненте
Промена доводи до Поновног рендеровања при промени у родитељу Поновног рендеровања при промени у тренутној компоненти

Пример коришћења пропса:

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

function ParentComponent() {
  const message = "Поздрав од родитеља!";
  return (
    <div>
      <ChildComponent text={message} /> {/* Пренос пропса "text" */}
    </div>
  );
}

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

function ChildComponent(props) {
  return (
    <p>{props.text}</p> {/* Коришћење пропса "text" */}
  );
}

export default ChildComponent;

Пример коришћења стања:

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

function Counter() {
  const [count, setCount] = useState(0); // Инициализација стања "count"

  const increment = () => {
    setCount(count + 1); // Промена стања
  };

  return (
    <div>
      <p>Бројач: {count}</p>
      <button onClick={increment}>Повећај</button>
    </div>
  );
}

export default Counter;