2932 просмотра
от 4 июня 2024
React

Вопросы и ответы с собеседований по React.js

Вопросы и ответы по React.js для собеседования фронтенд-разработчика. Что такое виртуальный DOM, в чём разница между useEffect и useLayoutEffect, что такое батчинг ререндеров, конкуретный режим, React Context, Suspense и многое другое.

1

Что такое React?

React - JavaScript библиотека, разработанная Facebook в 2011. В основе лежит компонентный подход, позволяющий создавать переиспользуемые UI-компоненты. Служит для создания сложных интерактивных интерфейсов для веб-сайтов и мобильных приложений.

Комментарии
0/3000
2

Что такое виртуальный DOM?

Виртуальный DOM (VDOM) - это копия Document Object Model, которую в своем ядре выстраивает фреймворк (в данном случае React). Вместо того, чтобы при каждом изменении данных заставлять браузер переформировывать DOM, внутри фреймворка происходит перерасчёт Virtual DOM. Дальше по результатам сравнения построенного Virtual DOM и DOM фреймворк вносит точечные изменения в реальный DOM. Этот механизм существенно повышает производительность React-приложения, так как позволяет избежать ненужных перерисовок и вычислений браузеру.

Комментарии
0/3000
3

Что такое JSX?

JSX - это дополнение к синтаксису JS, которое позволяет писать HTML в React компонентах. JSX - синтаксический сахар для функции React.createElement(component, props, ...children). За правильный парсинг и дальнейшую обработку отвечает babel.

Комментарии
0/3000
4

Что такое useEffect?

useEffect(() => { console.log('side effect') }, []) useEffect - это хук, принимающий функцию, которая будет выполнена после каждой перерисовки компонента. Однако, вторым параметром в useEffect передается массив зависимостей (переменные состояния) - при его наличии функция, переданная в useEffect, будет выполняться не при каждой перерисовке, а только в случае изменения элемента из массива зависимостей. useEffect вызывается асинхронно после перерисовки компонента.

Комментарии
0/3000
5

Что такое useLayoutEffect?

useLayoutEffect(() => { console.log('side effect') }, []) useLayoutEffect - это аналог useEffect, отличающийся тем, что выполняется синхронно до перерисовки компонента, что бывает крайне полезным при взаимодействии в функции-коллбеке с DOM.

Комментарии
0/3000
6

Как сбросить эффект?

useEffect(() => { let mounted = true; setTimeout(() => { if (mounted) { setUsername('hello world'); } }, 4000); return () => mounted = false; }, []); Функция, переданная в useEffect и useLayoutEffect, может при необходимости возвращать другую функцию, которая будет вызвана в момент размонтирования компонента, а также перед каждым своим исполнением, чтобы сбросить эффект предыдущего рендера).

Комментарии
0/3000
7

Что такое батчинг ререндеров?

Батчингом в React называют процесс группировки нескольких вызовов обновления состояния в один этап ререндера. Это положительно сказывается на производительности. До React 18 батчинг автоматически работал только для обработчиков DOM событий: function App() { const [count, setCount] = useState(0); const [flag, setFlag] = useState(false); function handleClick() { setCount(c => c + 1); // Не вызывает ререндер setFlag(f => !f); // Не вызывает ререндер // React вызовет ререндер только один раз, в конце } /* function handleClick() { fetchSomething().then(() => { // До React 17 следующие вызовы не батчились // Установка состояния происходит “после” события, в колбэке асинхронного вызова setCount(c => c + 1); // Спровоцирует ререндер setFlag(f => !f); // Спровоцирует ререндер }); } */ return ( <div> <button onClick={handleClick}>Next</button> <h1 style={{ color: flag ? "blue" : "black" }}>{count}</h1> </div> ); } В React 18 все обновления состояния внутри Promise, таймаутов, fetch-запросов будут батчиться также, как для обработчиков DOM-событий. Код ниже: function handleClick() { setCount(c => c + 1); setFlag(f => !f); // React будет вызывать ререндер только один раз, в конце } //работает так же, как и этот код: setTimeout(() => { setCount(c => c + 1); setFlag(f => !f); // React будет вызывать ререндер только один раз, в конце }, 1000);

Комментарии
0/3000
Авторизуйтесь, чтобы открыть доступ к контенту
9

Как отменить батчинг?

10

Что такое React.Suspense?

11

Что такое SuspenseList?

12

Что такое React.StrictMode?

13

Что такое конкурентный режим?

14

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

15

Что такое React.Fragment?

16

Что такое React Context?

17

Что такое refs в React?

18

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

19

В чем разница memo и useMemo?

20

Зачем нужен атрибут key?

21

Что такое prop drilling?

22

Как оптимизировать React-приложение?

23

Как тестировать React-приложение?

24

Что такое ErrorBoundary?

25

Почему этот код нестабилен?

26

Что такое reducer?

Вопросники по React
React
25 вопросов
Вопросы и ответы с собеседований по React.js
2932 просмотра
React
24 вопроса
Шпаргалка по полезным хукам для React-разработчика
1991 просмотр
Хотите заработать на создании вопросников?
Стать редактором
Смежные категории
Vue
15 вопросов
Вопросы и ответы с собеседований по Vue.js
1656 просмотров
TypeScript
21 вопрос
Вопросы и ответы с собеседований по TypeScript
3147 просмотров
JavaScript
58 вопросов
Вопросы и ответы с собеседований по JavaScript
5848 просмотров
CSS
19 вопросов
Вопросы и ответы с собеседований по CSS
1923 просмотра
Angular
74 вопроса
Вопросы и ответы с собеседований по Angular
1558 просмотров
Рекомендуем
Computer Science
12 вопросов
Вопросы с собеседований про операционные системы
1021 просмотр
Computer Science
13 вопросов
Вопросы и ответы с собеседований про ООП
1146 просмотров
Computer Science
11 вопросов
Вопросы и ответы про интернет-протоколы
1370 просмотров
Базы данных
60 вопросов
Вопросы и ответы с собеседований по SQL
2221 просмотр
Computer Science
28 вопросов
Объяснение паттернов проектирования с примерами
1355 просмотров
Computer Science
15 вопросов
Вопросы и ответы с собеседований по DDD
1453 просмотра
Другие разделы

Лента

Активность пользователей Девстанции

Перейти к ленте

Лидеры

Рейтинг самых результативных пользователей сообщества

Перейти к лидерам

Треды

Общение по интересам и связь с разработчиками

Перейти к тредам

Задачи

Решение алгоритмических задач с собеседований

Перейти к задачам

Вопросы

Ответы на вопросы с технических собеседований

Вы находитесь здесь

Викторины

Интерактивные викторины по вопросам с собеседований

Перейти к викторинам
Мы в Telegram
Новости проекта, общение с разработчиками, общение по интересам - присоединяйтесь!