Sobes.tech
Junior

Reactте props жана абалдын айырмасы эмнеде?

sobes.tech AI

AIден жооп

Пропс (props) жана статус (state) - React компоненттеринде маалыматтарды башкаруунун эки негизги механизми.

Пропс:

  • ата-энеден балдар компонентине өткөрүлөт.
  • балдар компонентинин ичинде өзгөрүлбөйт (immutable).
  • компоненттердин өз ара аракеттенүүсүнө мүмкүндүк берет.
  • кирүү маалыматтарына негизделген көрүнүштү же жүрүм-турумун аныктайт.

Статус:

  • конкреттүү компонентке тиешелүү жана аны тарабынан башкарылат.
  • компоненттин ичинде өзгөрүлмө (mutable).
  • убакыттын өтүшү менен өзгөрө турган жана компоненттин рендерине таасир эткен маалыматтарды көрсөтөт.
  • статус өзгөртүлгөндө компонент жана анын мураскорлору кайра рендерделет.

Негизги айырмачылыктарды таблица түрүндө көрсөтсө болот:

Өзгөчөлүк Пропс Статус
Чыганак Ата-энеден компонентке Өзүнчө компонент
Өзгөрүлмө Өзгөрүлбөйт (immutable) Өзгөрмөлүү (mutable)
Башкаруу Чыгыштан өткөрүлөт Ичке компонент тарабынан башкарылат
Мазмұн Чыгыш маалыматтарды көрсөтүү, жөндөө Ички статус башкаруу
Өзгөртүү алып келет Ата-энеде өзгөрүүлөр болсо кайра рендеринг Учурдагы компонентте өзгөрүүлөр болсо кайра рендеринг

Пропс колдонуу мисалы:

// 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;