Причины отдельного HTMLDivElements в приложении React - PullRequest
1 голос
/ 04 июня 2019

Я отлаживал проблему с памятью в Memory Profiler для приложения React / Redux и заметил эти Detached HTMLDivElements вместе с несколькими другими типами элементов.

enter image description here

Я не использую типичную навигационную библиотеку, просто использую состояние для перемещения экранов. Я не уверен, что это проблема с Chrome, сборщиком мусора или React, который каким-то образом содержит ссылку на старые экраны.

По каким причинам приложение React может оставить эти Отдельные элементы. Может ли приставка connect() потенциально содержать ссылку на хранилище, в результате чего компонент не будет переработан?

Наконец, я должен сказать, что это приложение React / Redux в качестве расширения Chrome.


Рассматривая проблему, я заметил, что класс Messenger (корневой компонент, содержащий логику обмена сообщениями в чате) указан 3 раза в профилировщике памяти.

enter image description here

А вот как я структурировал экраны.

renderScreen = () => {

   switch (this.state.screen) {
      case Screen.HOME:
         return <Home/>
      case Screen.MESSENGER:
         return <Messenger/>
      ....

   }
}

render() {
   ...
   return this.renderScreen()

}

Означает ли это, что новый класс Messenger создается при каждом переходе к этому компоненту?

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