Optimization Flashcards

1
Q

Как работает компонент Suspense?

A

Компонент Suspense позволяет отобразить fallback-компонент до момента полной отрисовки своих дочерних компонентов.
~~~
<Suspense fallback={<Loading></Loading>}>

<SomeComponent></SomeComponent>

</Suspense>
~~~
Суть Suspense заключается в обработке состояний получения suspended-данных. На данный момент suspended-данные отправляют приложения, основанные на NextJS и Relay, а также lazy-компоненты и данные, обрабатываемые через хук use, обрабатывающий промис.

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

Зачем нужен метод React.memo?

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

Зачем нужен компонент React.Profiler?

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

Как обработать ошибки в процессе отрисовки?

A

Возможно создание компонента-обработчика ошибок с помощью методов жиненного цикла:
1. Метод getDerivedStateFromError(error) => nextState позволяет изменить состояние компонента для отрисовки fallback-компонента
2. Метод componentDidCatch позволяет создавать побочные эффекты для логирования ошибок

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

Как работает строгий режим?

A

Строгий режим - это компонент React.StrictMode, который позвляет выявить следующие проблемы в дереве:
1. Применение небезопасных UNSAFE-методов жизненного цикла
2. Применение устаревшего контекста, который отсутствует в версии 17+
3. Применение устаревшего строкового ref, который обладает неочевидным поведением
4. Применение findDOMNode, который позволяет найти узел только в момент запроса, но не позволяет отследить его изменение
5. Обнаружение неожиданных побочных эффектов. React вызовет методы жизненного цикла, которые должны быть чистыми функциями: constructor, getDerivedStateFromProps, shouldComponentUpdate, тело функционального компонента, render, setState колбек, хуки useStatem useMemo и useReducer
6. Обеспечение возобновляемого состояния для случаев, когда React решит перемонтировать компонент для оптимизации. React имитирует разрушение и пересоздание эффектов на смонтированном компоненте

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

Для чего применяется useTransition?

A

Хук useTransition позволяет осуществлять фоновую отрисовку при изменении состояния React-приложения.
Фоновая отрисовка может быть отменена изменением состояния.
~~~
function TabContainer() {
const [isPending, startTransition] = useTransition();
const [tab, setTab] = useState(‘about’);

function selectTab(nextTab) {
startTransition(() => {
setTab(nextTab);
});
}
// …
}
~~~
useTransition работает совместно с Suspense.

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

Дл чего применяется useDefferedValue?

A

Хук useDefferedValue применяется для создания значения, которое позволяет React отложить отрисовку для оптимизации.
Значение должно быть примитивом или внешним объектом.
React сначала отрисует компонент со старым значением, затем фоново произведет отрисовку с новым значением и применит изменения к DOM. Если значение изменилось перед применением изменений к DOM, то он заново фоново произведет отрисовку.
Если пользователь будет произодить значимые изменения, например, ввод данных, то отрисова в фоне будет отложена.
Эффекты, зависимые от отложенного значения, применятся только при применении изменений к DOM.

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

Для чего применяется useDebugValue?

A

Хук useDebugValue применяется для отслеживания значения кастомного хука через DevTools.
Первый аргумент - значение.
Второй аргумент - функция-форматтер значения для вывода.

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

Для чего применяется метод React.lazy?

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

Для чего применяется метод React.startTransition?

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

Как работает fiber?

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