mutating mode vs persistent mode
Lekkie obiekty reprezentujące chwilowy stan UI. Niemodyfikowalne, zawsze tworzone od nowa.
pogodzić, uzgodnić
Zadaniem Reacta jest zbudować React Element Tree i odwzorować to drzewo w Host Tree.
React przeprowadza aktualizację po zmianie stanu UI. Optymalizacja polega na tym, że jeśli typ elementu oraz miejsce w drzewie pozostaje niezmienne, to następuje modyfikacja zamiast usunięcia i utworzenia instancji hosta.
render phase - reconciliation, budowa nowego React Element Tree, może być asynchroniczne. commit phase - zastosowanie nowego stanu do host tree. Synchroniczne, bo nie ma sensu pokazaywać pośredniego stanu.
React.memo()
React rendering is O(view size) rather than O(model size) and you can significantly cut the view size with windowing.
const [count, setCounter] = useState(0)
function increment() {
setCounter(count + 1)
}
function handleClick() {
increment()
increment()
increment()
}
// Efekt: trzykrotne wywołanie setCount(1)
const [counter, dispatch] = useReducer((state, action) => {
if (action === 'increment') {
return state + 1;
} else {
return state;
}
}, 0);
function handleClick() {
dispatch('increment');
dispatch('increment');
dispatch('increment');
}
Call stack, tylko że drzewo komponentów.
Wykonywane po tym jak przeglądarka zrobi repaint.
Hooks są zaimplementowane jako Linked List. UseState = pointer.next
Hooks są zaimplementowane jako Linked List. UseState = pointer.next