Стан компонентів

Додано: 17 листопада 2024
Предмет:
10 запитань
Запитання 1

Які основні відмінності між імперативним та реактивним підходами до програмування в контексті React?


варіанти відповідей

Імперативний підхід використовує звичайні змінні для збереження та оновлення даних, тоді як реактивний використовує «реактивні» змінні, створювані за допомогою хуків, для керування станом в компонентах React.

Імперативний підхід використовує тільки класові компоненти, а реактивний - тільки функціональні.

Імперативне програмування використовує стилізований підхід до створення компонентів, тоді як реактивне - декларативний

Імперативний підхід використовує тільки функціональні компоненти, а реактивний - тільки класові.

Запитання 2

Як використовується хук useState для роботи зі станом в функціональних компонентах React?


варіанти відповідей

Хук useState використовується тільки для зміни значення стану в класових компонентах

Хук useState автоматично визначає та оновлює стан без задання початкового значення

Хук useState створює пару значення та функцію для її оновлення, ініціалізується за допомогою значення по замовчуванню, і це дозволяє створити та оновлювати стан у функціональних компонентах

Хук useState приймає в якості аргументів початкове значення реактивної змінної і користувацької функції, яка дозволяє оновлювати реактивну змінну

Запитання 3

Що буде, якщо викликати setCount із тим самим значенням count (setCount(count)) у функціональному компоненті React, що використовує хук useState?


варіанти відповідей

Запуститься перерендер компонента, але із затримкою

Не відбудеться перерендер компонента, React оптимізує ігнорування подібних оновлень

З'явиться помилка виконання (runtime error) через неявну рекурсію

Виникне помилка на етапі компіляції

Запитання 4

Які основні принципи визначення необхідності перерендеру компонента в React?


варіанти відповідей

Перерендер відбувається завжди при виклику setCount незалежно від значення аргументу, що передається в функцію

Перерендер відбувається тільки при зміні значення в стані компонента.

Перерендер відбудеться, якщо setCount викликається з тим самим значенням, що і поточний стан

Перерендер відбудеться, якщо setCount викликається з флагом rerender: true

Запитання 5

Основні принципи перерендеру компонента React при використанні хука useState та об'єктів у стані компонента


варіанти відповідей

Перерендер завжди відбудеться при кожному виклику setCount, незалежно від змін у стані об'єкта

Перерендер завжди відбудеться, якщо будь-який ключ у об'єкті стану змінюється, навіть якщо посилання залишається незмінним

Перерендер відбудеться тільки у випадку, якщо setCount викликається з новим об'єктом, а не тим самим посиланням на об'єкт

Перерендер відбудеться тільки у випадку, якщо компонент використовує хук useEffect, і у списку залежностей вказана відповідна реактивна змінна

Запитання 6

Як базується порівняння об'єктів у JavaScript при використанні операторів == та ===?


варіанти відповідей

Порівняння об'єктів у JavaScript базується на порівнянні посилань (references) на об'єкти, тобто чи посилаються обидва операнди на одну і ту ж область пам'яті

Порівняння об'єктів у JavaScript ґрунтується на порівнянні їхнього вмісту, тобто на порівнянні значень всіх полів

Обидва вищезазначені варіанти правильні

Запитання 7

У якому варіанті коду відбудеться перерендер компоненту в React, де стан є об'єктом?

варіанти відповідей

counterObj.value = counterObj.value + 1;

setCounterObj((prevObj) => ({ ...prevObj, value: prevObj.value + 1 }));

setCounterObj(counterObj);

setCounterObj(counterObj);

Запитання 8

У компоненті Counter стан є об'єктом, в якому варіанті коду відбудеться перерендер?

варіанти відповідей

import React, { useState } from 'react';


const Counter = () => {

const [count, setCount] = useState({ value: 0 });


const increment = () => {

count.value = count.value + 1;

setCount(count);

};


return (

<div>

<p>Count: {count.value}</p>

<button onClick={increment}>Increment</button>

</div>

);

};


export default Counter;

import React, { useState } from 'react';


const Counter = () => {

const [count, setCount] = useState({ value: 0 });


const increment = () => {

setCount({ value: count.value + 1 });

};


return (

<div>

<p>Count: {count.value}</p>

<button onClick={increment}>Increment</button>

</div>

);

};


export default Counter;

Запитання 9

Вкажіть, що з вказаного можна віднести до переваг компонентного підходу

варіанти відповідей

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


Гнучкість, тобто компонентний підхід дозволяє легко змінювати або оновлювати окремі компоненти без впливу на інші частини додатку


Розбиття додатку на компоненти робить код більш зрозумілим та легким для читання

Всі компоненти успадковують набір методів від React.Component, що спрощує реалізацію типових задач підтримки життєвого циклу

Запитання 10

Вкажіть, що з вказаного характеризує відмінності між функціональними та класовими компонентами


варіанти відповідей

Класові компоненти повільніші за функціональні, через наявність великої кількості вбудованих методів

Класові компоненти мають білше методів життєвого циклу, функціональні використовують механізм хуків

Стан можна використовувати лише у класових компонентах

Класові компоненти офіційно не розвиваються, і розробники React вирішили, що майбутнє React за хуками

Створюйте онлайн-тести
для контролю знань і залучення учнів
до активної роботи у класі та вдома

Створити тест