Resium: как предотвратить перерисовку карты при любом изменении состояния?
У меня есть пример проекта Resium, который показывает карту. Я добавил простой onClick, который устанавливает какое-то состояние, которое нигде НЕ используется - я просто установил его. Тем не менее, это заставляет всю карту перерисовываться и мерцать, ЕСЛИ Я НЕ удалюterrainProvider
. Пример (terrainProvider закомментирован), если вы двигаете/щелкаете мышью, весь пользовательский интерфейс Cesium мерцает и перерисовывает все. Я использую React 17, Resium 1.14.3 (Cesium 1.86.1). Есть идеи, что происходит?
import React, { useState } from "react";
import { Cartesian3, Color } from "cesium";
import { Viewer, Entity } from "resium";
import * as Cesium from 'cesium';
export default function App() {
const [currentPos, setCurrentPos] = useState(null);
const handleMouseClick = (e, t) => {
setCurrentPos("xxx");
}
return (
<Viewer full
onClick={handleMouseClick}
onMouseMove={handleMouseClick}
// terrainProvider={new Cesium.CesiumTerrainProvider({ url: 'https://api.maptiler.com/tiles/terrain-quantized-mesh-v2/?key=xxxxxxx' })}
>
<Entity
name="Tokyo"
position={Cartesian3.fromDegrees(139.767052, 35.681167, 100)}
point={{ pixelSize: 10, color: Color.RED }}
/>
</Viewer>
);
}
1 ответ
Я предполагаю, что это. Неважно, чтоcurrentPos
не используется в компоненте, все еще является частью состояния компонента, то компоненты перерисовываются. В каждом рендереterrainProvider
prop получает новый экземпляр, так что это приводит к тому, что весьViewer
перерисовывает тоже. Возможно, вы можете сохранить свой экземпляр как состояние в компоненте и не создавать новый каждый раз при повторном рендеринге компонента.