2016-06-02 5 views
0

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

Я структурировал свое приложение в модульной форме, где у меня есть один модуль поиска и карты. Она построена так:

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

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

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

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

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

ответ

0

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

типа сцены

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

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

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

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

+0

Спасибо большое! У меня была эта проблема, когда Map.js не был частью контейнера табуляции. После того, как он переместился на вкладку, она перестала реиндерировать. Большое спасибо! :) –