У меня проблема с react-native при переключении представлений с помощью react-native-router-flux.
mapMarkerGen(){
if(mapMarkersFetched){
_this = this;
return mapMarkers.map(function(marker, i){
return(
<MapView.Marker
key={i}
coordinate={{
longitude: parseFloat(marker.lo),
latitude: parseFloat(marker.la),
}}
onPress={() =>{_this.getMarkerInfo(marker.id, i);}}
title={_this.state.title}
description={_this.state.info}
onCalloutPress={function(){Actions.place({placeID: marker.id});}}
>
</MapView.Marker>
);
});
}
}
После того, как я переключаюсь между представлениями, если я нажимаю выноску и возвращаюсь, я получаю сообщение об ошибке _this.getMarkerInfo не является функцией
"реагировать": "^16.0.0-альфа.12",
"реагирующий-родной": "^0.45.1",
"реагирующий поток-маршрутизатор": "^ 3.40.1"
mapMarkerGen
? Правильно ли привязанthis
? - person Marko Gresak   schedule 18.06.2017this
отличается от того, что вы ожидаете в опубликованном коде? Лучший способ действий — связать функцию внутри конструктора и всегда вместо этого вызывать связанную. Вы можете сделать что-то вродеthis.mapMarkerGen = this.mapMarkerGen.bind(this)
, и каждый вызовmapMarkerGen
теперь будет иметь правильную ссылкуthis
, независимо от того, где он вызывается. - person Marko Gresak   schedule 18.06.2017_this = this
не поможет, если исходная ссылкаthis
неверна. Поскольку код отсутствует, я не могу сказать, что может быть не так. Я предлагаю вам проверить, нет ли опечаток в определении или вызовеgetMarkerInfo
. И посмотрите, доступно ли оно там, где вы определяете_this = this
, и работайте оттуда. Кстати, почему вы определяете_this
как глобальное, а не локальное дляmapMarkerGen
? Возможно, вы где-то перезаписали значение_this
и сломали что-то. - person Marko Gresak   schedule 18.06.2017function
, и позволить виртуальной машине (или, альтернативно, компилятору, такому как babel) обрабатывать привязку правильной ссылкиthis
. - person Marko Gresak   schedule 18.06.2017