отладка периодически останавливается в React-Redux Connect - PullRequest
1 голос
/ 10 июля 2020

Я использую React-Redux некоторое время, но у меня всегда возникают вопросы при отладке «соединения», которое взаимодействует между компонентом и хранилищем, например

ln    export default connect((state) => {
112     return {
113       isUserAdmin: isUserAdmin(state)
114     };
115   })(MainPage);

      isUserAdmin(state) {
222       // perform a heavy task...
      }

, если я поставил точку останова на строка 113 , даже если я не вносил никаких изменений в свой компонент, я обнаружил, что он запускается периодически каждые 1 секунду, а также моя функция isUserAdmin (state) выполняется снова и снова и никогда не останавливался , это что-то, разработанное с помощью response-redux?

Я также обнаружил, что в моем стеке вызовов есть какая-то подписка , которая инициировала соединение (mapStateToProps), означает ли это за сценой response-redux использует какую-то подписку или обещание для выполнения опроса для поддержания состояния?

BTW, если мой isUserAdmin делает тяжелый job или я передаю дополнительный mapStateToProps через выполнение дополнительных методов, это сильно повлияет на производительность моего приложения, поскольку оно, кажется, работает бесконечно d сцена?

1 Ответ

2 голосов
/ 10 июля 2020

даже если я не вносил никаких изменений в свой компонент, я обнаружил, что он запускается периодически каждые 1 секунду.

  • Он не имеет никакого отношения к изменениям ( локальные обновления состояния компонента), которые вы выполняете в своем компоненте (если только вы не выполняете какие-либо обновления хранилища, отправляя actions). Он только слушает обновления store.
  • В первый раз он запускается с состоянием по умолчанию redux store при загрузке приложения. Последующие триггеры зависят от обновлений магазина, которые вы делаете в своем приложении / компонентах, отправляя actions.

означает ли это, что за сценой react-redux использует какую-то подписку или Обещать выполнить опрос для поддержания состояния?

  • Да. Он подписывается на обновления магазина. Все хорошо объяснено здесь .

, если мой isUserAdmin выполняет тяжелую работу или я передаю дополнительный mapStateToProps через выполнение дополнительных методов, это сильно повлияет на мое приложение производительность.

  • React придет как спаситель для вас. Пользовательский интерфейс / компонент не будет повторно визуализироваться, если состояние / ссылка не изменится.

Я бы рекомендовал вам переместить isUserAdmin logi c для реагирования компонента и использовать useMemo() привязку к получите оптимизацию производительности для интенсивных вычислений. Для вашей ссылки .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...