Похожие презентации:
React Reconciliation
1.
React Reconciliation2.
Какое самое слабое место в вебе?• Обновление DOM дерева
Чего мы ждем от интерфейсов?
• Комфортны для глаза (не лагают, не дергаются)
3.
Почему некоторые интерфейсылагают?
4.
Насекомые - до 250ГЦСобаки и птицы - около 80ГЦ
Человек - 60ГЦ
5.
60 кадров в секундуНа каждый кадр приходится 16 миллисекунд
6.
Как React добился 60кадров в секунду?
7.
Фаза 1Rendering and
Reconciliation
8.
Все начинается с дереваэлементов
React
Elemen
t
React
Elemen
t
React
Elemen
t
React
Elemen
t
React
Elemen
t
React
Elemen
t
React
Element
React
Element
9.
Узел дерева React елементов:1. {
2.
$$typeof : Symbol(react.element),
3.
type : 'button',
4.
props : {
5.
children : 'Click me',
6.
onClick : () => {...}
7.
8. }
}
10.
Дерево React элементов не единственноеReact Elements Tree
Fiber Tree
R
E
F
R
E
RE
RE
F
RE
RE
RE
F
RE
F
F
F
F
F
11.
{stateNode,
memoizedProps,
memoizedState
Fiber
}
12.
Fiber – tree?13.
ChildFiber -Linked List
Return (parent)
Fiber
Sibling
Fiber
Fiber
Fiber
Fiber
Fiber
Fiber
Fiber
14.
Effect15.
FiberFiber
Fiber
Fiber
Fiber
Fiber
Fiber
Fiber
16.
Effects – data fetching, subscriptions, ormanually changing DOM
Эффекты - запрос данных, подписки и
изменения DOM
17.
Все эффекты связанны[
,
,
,
]
18.
19.
Процесс обновления20.
WorkinProgressTree
Current Tree
Clone
F
F
F
setStat
e
F
F
F
F
F
F
F
F
F
F
F
21.
Этот процесс можно прервать и отменитьCurrent Tree
Next until of work
WorkinProgress Tree
F
F
F
F
F
F
F
F
F
F
22.
Эвристика23.
24.
Порядок сложности алгоритма сравнениядеревьев
O(n3), где n - число элементов в дереве
Количество операций на одно изменение
Например: при n = 1,000 ~ 1,000,000,000
25.
Разработчики React выделили 2 правила• Элементы разных типов - разные деревья
• Можно использовать key, чтобы пометить какие
элементы будут стабильны в разных рендерах
26.
Фаза 2Commit
27.
60 кадров в секундуНа каждый кадр приходится 16 миллисекунд
Программное обеспечение