элементы массива отображаются на втором рендере - PullRequest
0 голосов
/ 19 мая 2019

Я использую MapView и хочу отобразить некоторые маркеры на карте. Список, который я получаю с реквизитами, приходит нормально, так как я использую console.log для проверки, но карта не обновляется, когда сохраняет свое прежнее состояние. Когда я рендеринг во второй раз, то он обновляется. Почему это происходит? Массив списка получен правильно, но компонент MapView обновляется после второго рендеринга. Я не знаю, как я могу обновить компонент, когда появится список.

Например: когда список содержит 3 маркера (с использованием console.log), на картах отображается 0 маркеров, а после повторного рендеринга - 3 маркера. Компонент всегда на один шаг позади

import { Image, Text, StyleSheet, ScrollView, View, TouchableOpacity, ActivityIndicator } from 'react-native';


export default class MapComponent extends Component {
  constructor(props) {
    super(props);
  }


render() {

      console.log(this.props.list)

      let position=null
       position = this.props.list.map((maps, key) =>{
        var latitudine = parseFloat(maps.latitudine);
        var longitudine = parseFloat(maps.longitudine);
        return (
          <Marker key={key} coordinate={{ latitude: latitudine, longitude: longitudine }} cluster={true}>
            <Image source={require('../../../assets/png/posizione_mappa.png')} style={{ height: 60, width: 60 }} />
          </Marker>
        )
      }) 



      return (
           <View>
          <MapView
            provider={PROVIDER_GOOGLE}
            clustering={true}
            clusterColor='#db432b'
            clusterTextColor='white'
            clusterBorderColor='#f29485'
            clusterBorderWidth={10}
            showsUserLocation={true}
            customMapStyle={mapStyle}
            showsMyLocationButton={false}
            style={styles.map}
          >
          {position}
          </MapView>
      );
    }
  }
}



1 Ответ

0 голосов
/ 19 мая 2019

Это может быть связано с тем, что ваша ссылка list опора не обновляется при изменении.например, если вы прикрепили эти данные к компоненту, используя redux connect, вам нужно что-то вроде

const mapStateToProps = state => (
  {
    list: [...state.someReducer.list]
  }
)
connect(mapStateToProps)(YourComponent);

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

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