Ich habe eine SVG-Map-Komponente, die ich immer aktualisieren will, wenn sich die Requisiten ändern. Hinzufügen und Subtrahieren von Klassen auf einigen Pfaden ... so etwas.Snap.svg in Reagieren - wie auf die Svg in einer Lebenszyklus-Methode zugreifen?
Snap.svg schien der richtige Weg zu sein. Wenn jemand einen besseren Weg kennt, würde ich es gerne hören!
hier ist also meine Render-Methode, und die beiden Linien markiert mit Stirnrunzeln sind die, die ich möchte in einem Lifecycle-Methode zu erhalten arbeiten wie ComponentWillReceiveProps
render() {
var map = Snap('#map');
Snap.load("images/map.svg", function(data){
if (map) {
map.append(data);
const a2047 = map.select('#a2047'); <---- :(
a2047.attr({stroke:'yellow', strokeWidth:'6px'}) <---- :(
}
})
return (
<div className="map" id="map"/>
);
}
Das Problem ist, wird map
nirgendwo anders arbeiten außer in diesem Snap.load
Rückruf. Ich habe mehrere Möglichkeiten ausprobiert, state
, window.map
, this.map
... zu verwenden, und ich bekomme Fehler wie 'wählen ist keine Funktion'.
Wie bekomme ich Zugriff auf die Karte in ComponentWillReceiveProps
?
Oder ist Snap.svg sogar der Weg für diese Anwendung zu gehen?
Hat diese - dank - aber Snap.load eine neue Map mit jedem Wechsel in Requisiten. Suchen Sie nach der besten Lösung ... – dwilbank
Setzen Sie vielleicht eine 'geladene' Flagge im Status? – dwilbank