Я делаю приложение с React Native Maps, и я пытался создать цветной код для маркеров. Я могу заставить его работать, пока мне не понадобится перерисовать один из них и изменить цвет.
Поток: Использовать вводит -> Правильно видит цветовой код -> Кликает по одному маркеру и голосует Y / N -> Если Y> N или N> Y, меняем цвет на зеленый или красный. У меня проблемы с последним шагом, поскольку повторная визуализация не происходит.
Мой код прямо сейчас:
{this.props.data.map(marker => (
<Marker
key={marker.id}
coordinate={marker.l.coords}
pinColor={this.markerColor(marker.j)}
onPress={() => {
this.setCard(marker.id);
}}>
<Callout
onPress={() => {
if (!this.state.showCard) {
this.setCard(marker.id);
}
}}>
<CustomCallout title={marker.t} />
</Callout>
</Marker>
))}
И функция для изменения цвета:
markerColor = jelly => {
console.log(jelly);
const date = new Date();
let GMT_Date = new Date(date.toUTCString());
let DB_Date;
let noDate = false;
if (jelly.last && jelly.last !== '' && jelly.last !== null) {
DB_Date = new Date(jelly.last);
GMT_Date.setHours(GMT_Date.getHours() + jelly.tz);
} else {
DB_Date = GMT_Date;
noDate = true;
}
if (GMT_Date.getUTCDate() !== DB_Date.getUTCDate() || noDate) {
return COLORS.lightBlue;
} else if (GMT_Date.getUTCDate() === DB_Date.getUTCDate()) {
if (jelly.no > jelly.yes) {
return COLORS.green;
} else if (jelly.no < jelly.yes) {
return COLORS.red;
} else if (jelly.yes == jelly.no) {
return COLORS.lightBlue;
}
}
};
Я заметил, что эта функция выполняется для ВСЕХ маркеров каждый раз, когда я нажимаю на один из них, но не меняет цвет ни на один из них.
Любое предложение о том, где может быть проблема ?
Заранее спасибо,