2902 просмотра
от 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
2902 просмотра
React
24 вопроса
Шпаргалка по полезным хукам для React-разработчика
1974 просмотра
Хотите заработать на создании вопросников?
Стать редактором
Смежные категории
JavaScript
58 вопросов
Вопросы и ответы с собеседований по JavaScript
5779 просмотров
CSS
19 вопросов
Вопросы и ответы с собеседований по CSS
1890 просмотров
Vue
15 вопросов
Вопросы и ответы с собеседований по Vue.js
1639 просмотров
TypeScript
21 вопрос
Вопросы и ответы с собеседований по TypeScript
3122 просмотра
Angular
74 вопроса
Вопросы и ответы с собеседований по Angular
1514 просмотров
Рекомендуем
Computer Science
13 вопросов
Вопросы и ответы с собеседований про ООП
1133 просмотра
Git
20 вопросов
Вопросы и ответы с собеседований по Git
1727 просмотров
Computer Science
12 вопросов
Вопросы с собеседований про операционные системы
1017 просмотров
Computer Science
28 вопросов
Объяснение паттернов проектирования с примерами
1341 просмотр
Базы данных
60 вопросов
Вопросы и ответы с собеседований по SQL
2193 просмотра
Computer Science
15 вопросов
Вопросы и ответы с собеседований по DDD
1445 просмотров
Другие разделы

Лента

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

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

Лидеры

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

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

Треды

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

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

Задачи

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

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

Вопросы

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

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

Викторины

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

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