Задать вопрос
@MishaXXL

В чем заключается суть оптимизации скорости обновления компонентов через useReducer?

Наткнулся случайно на обсуждение вопроса, что оптимизация реакт компонента обыгрывается через замену 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не выдало
  • Вопрос задан
  • 120 просмотров
Подписаться 1 Простой 4 комментария
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега React
Почему мои поиски в попытках найти логику хука провалились
Кто ж вас знает ¯\_(ツ)_/¯

как выйти на след
Я поиском по репе на Гитхабе воспользовался: https://github.com/facebook/react/blob/6f18664b82b...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы