React Flashcards

1
Q

Что вызывает обновление компонента?

A

Обновление компонента вызывают изменение состояния (useState) и изменение пропсов. В классовых компонентах еще есть forceUpdate.

Изменение состояния не будет приводить к обновлениям, если новое значение состояния не изменилось

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Virtual DOM

A

Виртуальный DOM в React – реакт работает не с DOM напрямую, а с его копией virtual dom. Этот подход помогает оптимизировать производительность веб-приложений.

Используется Reconcilation, batching

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

setState синхронный или асинхронный?

A

setState - асинхронный.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Что такое JSX

A

JSX — это расширение js, которое позволяет писать HTML в React компонентах.
Cинтаксический сахар для функции React.createElement(component, props, …children). Bable преобзазует Компоненты с заглавной буквы и html теги в React.createElement

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

В чем разница между классовыми и функциональными компонентами

A

Классовые компоненты имеют доступ к методам жизненного цикла компонента и управлению состоянием через this.state и this.setState(). Есть forceUpdate. В настоящее время сообщество реак отказалось от поддержки классовых компонентов в пользу фк

Функциональные компоненты не имеют доступа к методам жизненного цикла или состоянию. В ФК есть хуки в отличие от классовых компонентов

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Методы жизненного цикла компонента?

A

Методы жизненного цикла – это способ подключения к различным этапам жизненного цикла компонента, позволяющий выполнять определенный код в определенное время. Вот список основных методов:

constructor – первый метод, вызываемый при создании компонента. Он используется для инициализации состояния. В функциональных компонентах для аналогичных целей используется хук useState.

render – отвечает за рендеринг JSX-разметки и возвращает содержимое, которое будет выведено на экран.

componentDidMount – вызывается сразу после рендеринга компонента в DOM. Обычно используется для задач инициализации, таких как вызов API или настройка слушателей событий.

componentDidUpdate – вызывается при изменении реквизитов или состояния компонента. Позволяет выполнять побочные эффекты, обновлять компонент на основе изменений или запускать дополнительные вызовы API.

componentWillUnmount – вызывается непосредственно перед удалением компонента из DOM. Используется для очистки ресурсов, которые были установлены в
componentDidMount, например, для удаления слушателей событий или отмены таймеров.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

useState

A

useState возвращает значение состояния и функцию для его обновления.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

useEffect

A

Хук useEffect позволяет выполнять побочные эффекты в функциональном компоненте. Мутации, подписки, таймеры, логирование и другие побочные эффекты не должны выполняться во время первой фазы рендеринга: это может привести к ошибкам и несоответствиям в пользовательском интерфейсе.

Вместо этого рекомендуется использовать useEffect. Функция, переданная в useEffect, будет выполняться после фазы фиксации, а если в качестве второго параметра передать массив зависимостей, то функция будет вызываться каждый раз, когда одна из зависимостей изменяется.

при не передаче массива выполняется каждый раз при обновлении компонента

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Как отследить размонтирование функционального компонента?

A

Для этого функция, передаваемая в useEffect, может возвращать функцию очистки.

useEffect(()=>{
return ()=>{
}
},[])

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Что такое пропсы в React?

A

props, пропсы – это данные, которые передаются компоненту от родителя. Реквизиты доступны только для чтения и не могут быть изменены.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Что такое пробрасывание пропсов (props drilling)?

A

Под пробрасыванием пропсов понимается процесс передачи пропсов через несколько уровней вложенных компонентов, даже если некоторые промежуточные компоненты не используют эти пропсы напрямую

Provider=>useContext

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Для чего и как используется UseMemo?

A

Хук useMemo используется для кэширования и запоминания результатов вычислений. В него передается callback, которая производит вычисления, и массив зависимостей. Хук будет пересчитывать значение только тогда, когда изменится одна из зависимостей – эта оптимизация помогает избежать ресурсозатратных вычислений при каждом рендере.

Использовать при передаче значения в пропсы компонента, обернутого в React.memo. Либо в зависимости каким-либо хукам

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Для чего используется useCallback и как он работает?

A

Хук useCallback возвращает мемоизированную версию коллбэк-функции. Эта версия будет изменяться только в том случае, если изменятся значения зависимостей в массиве зависимостей, переданном в useCallback.

Хук используют для передачи функций обратного вызова в оптимизированные дочерние компоненты, которые для предотвращения лишних отрисовок полагаются на ссылочное равенство (===).
Благодаря тому, что useCallback возвращает мемоизированную версию, ссылка на коллбэк будет стабильной между рендерами, если зависимости не изменились.
Таким образом, useCallback позволяет оптимизировать производительность за счет избежания лишних отрисовок.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

В чем разница между useMemo и useCallback?

A

useMemo используется для запоминания результата вычислений, а useCallback – для запоминания самой функции.
useMemo кэширует вычисленное значение и возвращает его при последующих рендерах, если зависимости не изменились.
useCallback кэширует саму функцию и возвращает тот же экземпляр, если зависимости не изменились.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

useRef

A

Обычно useRef используется для доступа к дочерним элементам в императивном стиле, то есть явно обращаясь к какому-то элементу DOM. Это позволяет выполнять различные действия над элементом – изменять стили, добавлять события и т.д.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Что такое React.memo()

A

React.memo() – это компонент высшего порядка, который используется для оптимизации производительности веб-приложений. Если компонент, который вы хотите оптимизировать, всегда отображает один и тот же результат с неизменными реквизитами (props), вы можете обернуть его вызов в React.memo, чтобы запомнить его результат. Таким образом, React может использовать последний отрендеренный результат этого компонента вместо того, чтобы снова его рендерить, если входные данные не изменились. Это помогает оптимизировать производительность, так как повторный рендеринг может быть затратным по ресурсам. Важно отметить, что React.memo влияет только на изменение входных данных (реквизитов): если функциональный компонент, обернутый в React.memo, использует useState, useReducer или useContext для изменения своего состояния или контекста, он все равно будет перерисован при изменении этих состояний или контекстов.

17
Q

Что такое фрагмент React fragment?

A

Возврат нескольких элементов из компонента – обычная практика в React. Однако это может привести к созданию большого количества элементов в дереве виртуального DOM, отчего пострадает производительность приложения.

Фрагменты React позволяют группировать несколько элементов внутри функции-компонента, избегая таким образом создания большого количества узлов в виртуальном DOM. Это улучшает производительность приложения и читаемость кода.

18
Q

Что такое React Reconciliation?(используется в virtual dom)

A

React использует алгоритм согласования (reconciliation) для определения изменений между старым и новым деревом виртуального DOM.
сложность алгоритма O(n)

Всякий раз, когда изменяется тип элемента, React сносит старое дерево и строит новое дерево с нуля. Это приводит к перестройке Dom дерева.

Можем использовать ключи для избежания лишних перерисовок элементом

<div>
<Counter></Counter>
</div>

<span></span>

<Counter></Counter>

</span>

При сравнении двух элементов React DOM одного типа React смотрит на атрибуты обоих, сохраняет тот же базовый узел DOM и обновляет только измененные атрибуты.

19
Q

Что такое пользовательский хук

A

Пользовательский хук в React – это функция, которая позволяет повторно использовать логику внутри компонентов. Хуки позволяют инкапсулировать определенную логику и использовать ее в разных компонентах. Названия пользовательских хуков обычно начинаются с use, и они могут вызывать другие хуки при необходимости.

20
Q

чистая функция

A

Каждый раз функция возвращает одинаковый результат, когда она вызывается с тем же набором аргументов

НЕТУ:
Видоизменение входных параметров
HTTP вызовы (AJAX/fetch)
Запросы DOM

21
Q

SPA,SSR,SSG

A

SPA
при открытии сайта браузер отправляет запрос на сервер;

тот в ответ возвращает пустую страницу index.html, в которой нет разметки, кроме блока div с уникальным идентификатором (id);

и есть тег script (здесь в блоке head), в котором подключается React-приложение;

затем браузер парсит эту страничку, и когда доходит до тега </script>, загружает файл со скриптом и исполняет его;

библиотека ReactDOM встроит приложение в блок div c идентификатором root, и после этого мы увидим наше приложение в браузере.

будет сделан API-запрос на получение данных

React отобразит данные, полученные в ответе от сервера, на странице

SSG: Static Site Generation

Static Site Generation — подход, когда содержимое сайта генерируется в html-файлы. На сервере все страницы уже сгенерированны и отправляются сразу сгенерированный html. ЗАпросы выполняются на стороне клиента

SSR: Server Side Rendering

В CSR и SSG сервер возвращает готовую статическую страницу. В случае серверного рендеринга, после запроса клиентом странички, сервер на своей стороне выполняет API-запросы, а затем формирует html-страницу. Те запросы выполняются на стороне сервера а затем страница со всеми данными возвращаются на клиент

22
Q

Чистые компоненты это

A

Компонент является чистым, если он гарантированно возвращает один и тот же результат при одинаковых пропсах и состоянии.
Для чего нужны чистые компоненты и чем они лучше? Чистые компоненты имеют улучшенную производительность за счет поверхностного сравнения пропсов и состояния.

23
Q

Что такое Компонент высшего порядка (Higher-Order Component, HOC)

A

Функция, которая получает компонент в качестве аргумента и возвращают модифицированный компонент - называется компонентом высшего порядка.

Она применяется для повторного использования логики (помогает следовать принципу DRY). Хорошо подходит для инжектирования зависимостей.

HOC - работает как фабрика компонентов. HOC может принимать конфигурации в качестве аргументов и возвращать компонент или семейство компонентов. Через HOC можно скрыть источник данных для компонентов, которые выглядят одинаково, однако обращаются к разным источникам данных.

24
Q

Lazy loading, code splitting

A

Lazy loading - компонент загружается после загрузки остальных компонентов (когда компоненты смонтированы, lazy loading это как динамический импорт).

code splitting - Разделение кода заключается в разделении кода на несколько пакетов или компонентов, которые могут загружаться по требованию или параллельно. Это означает, что они не загружаются, пока не понадобятся.

25
Q

Предохранители (error boundary)

A

Error boundary это классовый компонент. Позволяет отлавливать ошибки которые произошли в компонентах.

Обратите внимание, что error boundary перехватывают только ошибки в компонентах, расположенных ниже них в дереве . error boundary не может перехватывать ошибку внутри себя.

26
Q

useContext

A

это React Hook, который позволяет вам подписываться на контекст из вашего компонента.

<Context.Provider> вызывается выше компонета где используется useContext
</Context.Provider>

27
Q

useDeferredValue

A

это React Hook, позволяющий отложить обновление части пользовательского интерфейса.

function SearchPage() {
const [query, setQuery] = useState(‘’);
const deferredQuery = useDeferredValue(query);
// …

Отсрочка повторной отрисовки части пользовательского интерфейса. Если наш стейт очень часто изменяется, и эти изменения долго перерисовывают наш компонент есть смысл использовать useDefferedValue

28
Q

useId

A

это React Hook для генерации уникальных идентификаторов.

const id = useId()

29
Q

хуки js это

A

Хуки — это функции, с помощью которых вы можете взаимодействовать с состоянием и методам жизненного цикла React из функциональных компонентов

30
Q

Что такое реакт, зачем он нужен

A

Преимущество использования это виртуальное дерево, компонентный подход, их переиспользование, однонаправленный поток данных. Все это нужно для разработки более оптимизированных интерфейсов, для ускорения разработки.

31
Q

useLayoutEffect

A

useLayoutEffect тоже что и useEffect. Отличие то что вызывается синхронно. useLayoutEffect выполняется когда изменения выли внесены в virtualDom но еще не были отрисованы браузером

32
Q

Что такое виртуализация списков?

A

Используется если нужно отобразить сразу очень большое кол-во елементов. Виртуализация оценивает размеры области видимости, размеры и количество самих элементов, попадающих в область видимости и формирует в этой области видимости нужные элементы. Рендер только тех элементов, которые попали в область видимости.
В реакте можно использовать react-window

33
Q

batching

A

Пакетирование (batching) - это когда React группирует несколько асинхронных операций в одну и тем самым уменьшая повторный ререндеринг компонент.

34
Q

use()

A

use - это хук React, который позволяет вам прочитать значение промиса или контекста. use можно вызывать в циклах и условных операторах.

const prom = new Promise((resolve)=>{
setTimeout(()=>{
resolve(‘Success’)
},10000)
})
use(prom)