Через вызов API я получаю данные GEOJSON (точки). Я немедленно отображаю эти данные на карте листовок с помощью circleMaker и отображаю их все одним цветом. Затем я даю пользователю возможность перемещать ползунок (запускает действие с полезной нагрузкой, являющейся значением / местоположением ползунка). Я хочу изменить цвет некоторых кругов (например, тех, у которых атрибут ниже значения ползунка). Как я могу сделать это без повторного рендеринга всех кругов?
Пример: (все круги зеленые, а значение ползунка равно 0, я затем изменяю ползунок на 4, а все круги со значением (которое я получаю из функций GEOJSON) ниже 4 (значение ползунка) меняют цвет в красный, а остальное останется прежним.
Пример кода: у меня есть компонент GEOJSON:
<GeoJSON
key={_.uniqueId()}
data= {this.props.countrySelected.geojson}
pointToLayer={this.pointToLayer.bind(this)}
></GeoJSON>
^ Данные представляют собой объект GEOJSON со всеми точками, которые имеют функцию, скажем, "оценка"
Вот pointToLayer:
pointToLayer = (feature, latlng) => {
return L.circleMarker(latlng, {
color: '#228B22',
fillColor: '#228B22',
fillOpacity: .6,
radius: 3
}).bindPopup(popUpString(feature.properties));
}
В другом компоненте у меня есть ползунок, который вызывает handleChange каждый раз, когда он изменяется:
handleChange = (value) => {
this.props.sliderChanged(value);
}
Затем это запускает действие, которое затем запускает редуктор, который вносит соответствующие изменения в состояние (то есть заставляет значение ползунка состояния изменяться на значение в ползунке, которое только что изменил пользователь.