Наткнулся случайно на обсуждение вопроса, что оптимизация реакт компонента обыгрывается через замену useState на использование useReducer
За счет чего получается выгода в скорости и как это работает под капотом?
В файле
react.development.js
Наткнулся на
function useReducer(reducer, initialArg, init) {
var dispatcher = resolveDispatcher();
return dispatcher.useReducer(reducer, initialArg, init);
}
Где пошел последу
function resolveDispatcher() {
var dispatcher = ReactCurrentDispatcher.current;
{
if (dispatcher === null) {
error('Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for' + ' one of the following reasons:\n' + '1. You might have mismatching versions of React and the renderer (such as React DOM)\n' + '2. You might be breaking the Rules of Hooks\n' + '3. You might have more than one copy of React in the same app\n' + 'See https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.');
}
}
return dispatcher;
}
Еще чуть дальше
var ReactCurrentDispatcher = {
current: null
};
И получилось, что в
resolveDispatcher
наш
dispatcher
равен
null
Почему мои поиски в попытках найти логику хука провалились и как выйти на след логики
useReducer
?
Ведь в этом файле мы экспортируем наш
useReducer
в мир
В поисках совпадений по словам почему-то больше файлов с именами
useReducer
не выдало