мобильная производительность с использованием mapbox

Я пытаюсь использовать Mapbox ( https://github.com/mapbox/react-native-mapbox-gl ) с React-Native, React Redux и Flux Navigation.

Я структурировал свое приложение по модульному принципу, где у меня есть один модуль поиска и карты. Он устроен следующим образом:

/modules
   /search
       /containers
           SearchResults.js
   /map
      /containers
           Map.js

В SearchResults.js я получаю 10 результатов, которые отображаются с изображением и текстом. Результаты хранятся в моем магазине Redux. У меня есть 2 кнопки в Map.js и SearchResults.js, которые позволяют перемещаться между двумя контейнерами (вперед и назад с помощью навигации Flux Action.Map() и Action.SearchResults() ).

В Map.js я обновляю состояние карты, чтобы получать долготу и широту из хранилища searchResult. Проблема, с которой я сталкиваюсь прямо сейчас, заключается в том, что возникают серьезные проблемы с производительностью, если я переключаюсь между SearchResults и Map вперед и назад. Это происходит потому, что карта постоянно перерисовывается.

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

Каков наилучший способ предотвратить повторную визуализацию Map.js?


person Oliver Franke    schedule 02.06.2016    source источник


Ответы (1)


Я думаю, это то, для чего создано ключевое слово type в вашем определении Scene. Согласно документации потока реакции-родного-маршрутизатора:

Тип сцены

Определяет, как новый экран добавляется в стек навигатора. Один из толчка, прыжка, замены, сброса. Если родительским контейнером является панель вкладок (tabs=true), переход будет установлен автоматически.

И если мы посмотрим на официальную документацию Navigator, мы узнаем, что переход между scenes позволяет нам менять экран без размонтирования.

По умолчанию react-native-router-flux использует push, который размонтирует ваши сцены.

Я не пробовал это сам, но я думаю, что это должно работать.

person user2015762    schedule 02.06.2016
comment
Большое спасибо! У меня была эта проблема, когда Map.js не был частью контейнера панели вкладок. После перемещения его на панель вкладок он перестал перерисовываться. Большое спасибо! :) - person Oliver Franke; 04.06.2016