Назад

Розбираємося з React: різниця між state та props

зображення
Джерело: http://surl.li/hujwf

React різко змінив спосіб, яким веб-розробники будують інтерфейси користувачів, надаючи гнучкий та ефективний фреймворк для створення динамічних та інтерактивних додатків. Дві фундаментальні концепції в React - стан (state) та властивості (props). Розуміння різниці між ними є ключовим для створення ефективних компонентів React, які легко обслуговувати. У цій статті ми детально розглянемо відмінності між станом та властивостями та дослідимо найбільш поширені практики їх ефективного використання.

State: Керування даними компонента

Стан (state) - це вбудована функція в React, яка дозволяє компонентам керувати та зберігати внутрішні дані. Він представляє поточний стан компонента і може оновлюватись з часом, зазвичай в результаті взаємодії користувача або асинхронних операцій. State приватно належить кожному компоненту, тобто до нього можна отримати доступ та змінювати його лише всередині цього компонента або його дочірніх компонентів.

Коли використовувати state:

  • 1. Збереження змінних даних:
    Використовуйте state для збереження даних, які можуть змінюватись протягом життєвого циклу компонента.

  • 2. Локальні дані компонента:
    State ідеально підходить для обробки даних, специфічних для одного компонента, таких як значення введення форми, стани перемикачів або лічильники.

  • 3. Оновлення компонента UI:
    Кожного разу, коли змінюється state, React автоматично повторно рендерить компонент, відображаючи оновлений UI.

Найкращі практики ефективного використання state:

  • 1. Мінімізуйте використання state:
    Уникайте надмірного використання state, визначаючи, що дійсно потрібно відстежити та оновити всередині компонента.

  • 2. Використовуйте контрольовані компоненти:
    Для елементів форми використовуйте контрольовані компоненти, де state компонента виступає як єдине джерело правди, керуючи значеннями введення та точно обробляючи оновлення.

  • 3. Використовуйте функціональний setState:
    При оновленні state на основі його попереднього значення використовуйте функціональну форму setState, щоб забезпечити точність, особливо в сценаріях, пов'язаних з асинхронними операціями або пакетними оновленнями.

Властивості (props): Передача даних компонентам

Властивості (props) (скорочено від properties) - це дані, що передаються компонентам від їх батьківського компонента або точки входу додатка. Props дозволяють компонентам отримувати та використовувати зовнішні дані, роблячи їх складними та можливими для багаторазового використання. Після передачі, props залишаються незмінними всередині компонента, тобто їх не можна змінювати безпосередньо.

Коли використовувати props:

  • 1. Поділ даних між компонентами:
    Props дозволяють передавати дані між компонентами, дозволяючи ієрархічний потік даних.

  • 2. Взаємодія з батьківськими компонентами:
    Дочірні компоненти можуть використовувати props для сповіщення та взаємодії зі своїми батьківськими компонентами.

  • 3. Налаштування компонентів багаторазового використання (reusable components):
    Props надають механізм налаштування поведінки або вигляду компонентів багаторазового використання, роблячи їх універсальними.

Давайте розглянемо приклад!

Нижче маємо батьківський компонент (ParentComponent) та дочірній компонент (ChildComponent). Розберемо, як використовуються стан (state) та властивості (props):

зображення

Батьківський компонент:

  • • Стан count визначено за допомогою хука useState та ініціалізовано значенням 0.

  • • У JSX ParentComponent стан count відображається за допомогою {count}.

  • • Функція incrementCount використовується для оновлення стану count при натисканні кнопки.

  • • Рендериться ChildComponent, а стан count передається як властивість (count={count}).

Дитячий компонент:

  • • Властивість count отримується від батьківського компонента через props.

  • • У JSX ChildComponent відображається отримана властивість count за допомогою {count}.


Цей приклад демонструє, як батьківський компонент керує та оновлює свій внутрішній стан (count) та передає цей стан як властивість до дочірнього компонента. Дочірній компонент використовує отриману властивість для відображення значення лічильника (value).

Розділяючи стани та властивості (state and props), React уможливлює зрозумілий потік даних та полегшує процес багаторазового використання компонентів. Батьківський компонент підтримує свій власний state, а дочірній - отримує дані через props, полегшуючи керування та комунікацію між компонентами.

Props та правила іменування

Хоча технічно ви можете назвати prop чим завгодно, зазвичай рекомендується дотримуватися загальних правил і вказівок, щоб забезпечити послідовність і придатність вашої кодової бази.

Варто зазначити, що деякі props встановили певні угоди або очікування в екосистемі React. Наприклад, props обробника подій (event handler) часто мають префікс «on», наприклад onClick, onChange, чи onSubmit. Ця угода допомагає визначити props, призначені для обробки конкретних подій.

Загалом, добре вибирати назви props, які є описовими, зрозумілими та відповідають меті та даним, які вони представляють. Це робить ваш код більш читабельним і допомагає запобігти плутанині, особливо під час роботи над великими проектами або співпраці з іншими розробниками.

Підіб’ємо підсумки:

State і props є важливими поняттями в React, які мають різні цілі в керуванні даними компонентів та передачі інформації між компонентами. Розуміння різниці між ними є ключовим для створення ефективних і масштабованих програм React.