React Native - принимает ли MapView только явные маркеры?

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

render()
{
const neoMarker = (lat, long, title, desc) => {
      <MapView.Marker
      coordinate={{latitude: lat,
          longitude: long,}}
      title={title}
      description={desc}
      onPress={() => this.setState({jvisible: true})}>
      <FAB
    small
    icon="add"
    onPress={() => this.setState({jvisible: true})}/>
      </MapView.Marker>
    }

    var noGuest = 5;
    var test = 37.43538;

    for(let i = 0; i < noGuest; i++){
      markerL.push(neoMarker(test, -122.4324, "New Job", "Testing Marker List"));
      test = test + 0.01000;
    }
}

  return (
  <View style={styles.container}>
  <MapView
    style={{ flex: 1 }}
    initialRegion={{
      latitude: 37.78825,
      longitude: -122.4324,
      latitudeDelta: 0.0922,
      longitudeDelta: 0.0421,
    }}>
     {markerL}
  </MapView>

Это не сработало, и карта появилась без маркеров, поэтому я попытался сделать то же самое, что и раньше, за исключением использования индекса, в данном случае markerL[0]. Это тоже не сработало. Итак, я наконец попытался заставить его заполнить make, вызвав саму функцию neoMarker вместо {markerL} с некоторым общим вводом, и mapview по-прежнему не отображал никаких маркеров.

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

Следовательно, не разрешает ли MapView явным образом списки неявных маркеров?

PS: я использую Expo (https://expo.io/) для тестирования и отладки моего кода на мобильном устройстве. .


person Sasori_Zero    schedule 28.08.2018    source источник


Ответы (1)


Когда ты делаешь

someFunction = () => "abc"

ты вернешься "abc". Но когда вы это сделаете:

someFunction = () => {
    "abc"
}

ты вернешься undefined.

Может быть и другая проблема, но на первый взгляд кажется, что вы просто ничего не возвращаете от neoMarker.

const neoMarker = (lat, long, title, desc) => {
    <MapView.Marker

должно быть

const neoMarker = (lat, long, title, desc) => {
    return <MapView.Marker

To demonstrate:

const noReturn = () => {
    "abc";
}

const withReturn = () => {
    return "xyz";
}

console.log(noReturn(), withReturn());

person dave    schedule 28.08.2018
comment
Это исправлено, одобренный ответ - person Sasori_Zero; 28.08.2018