【发布时间】:2017-11-04 12:50:26
【问题描述】:
我有一个 svg 地图组件,我想在道具更改时对其进行更新。 在某些路径上添加和减去类……诸如此类。
Snap.svg 似乎是要走的路。如果有人知道更好的方法,我想听听!
所以这是我的渲染方法,用皱眉标记的两行是我想要在诸如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"/>
);
}
问题是,map 除了在这个Snap.load 回调中之外,在其他任何地方都不起作用。我尝试了几种方法,使用state、window.map、this.map...,我得到了诸如“选择不是函数”之类的错误。
如何访问ComponentWillReceiveProps中的地图?
或者 Snap.svg 甚至是该应用程序的最佳选择?
【问题讨论】:
-
这样做了 - 谢谢 - 但 Snap.load 会根据道具的每一次变化创建一个新地图。目前正在寻找最佳解决方案...
-
或许在状态中设置一个“已加载”标志?