Вместо вступления: в интернетах нет наглядных примеров batching`а, попробуем это исправить. Начнем с того, что изменение state в компоненте React вызывает его перерендер. Попробуем изменить несколько state`ов. const handleClick = () => {
setAge(19);
setName('Vasiliy');
} Происходит 1 ререндер. Все потому, что у нас есть batching - механизм, который группирует обновления нескольких состояний для оптимизации производительности. Усложним пример и добавим несколько асинхронных операций: const handleClick = () => {
setAge(19);
setName('Ivan');
setTimeout(() => {
setAge(20);
setName('Vasiliy');
}, 0)
setTimeout(() => {
setAge(21);
setName('Oleg');
}, 0)
} 2 ререндера. Синхронные операции объединяются отдельно от асинхронных, но есть нюанс. Механизм batching`а асинхронных операций добавлен только в 18 React. Попробуем изменить время второго таймера. const handleClick = () => {
setTimeout(() => {
setAge(20);
setName('Vasiliy');
}, 100)
setTimeout