ElemeFE/react-amap

'zooms' 是一个静态属性,地图实例创建成功后无法修改

meitingshuoguo opened this issue · 3 comments

  • 我已经搜索过 issue,没有类似的问题,或者类似的问题仍然没有解决方案。
  • 我已经搜索过文档,并且仍然没有找到解决方案。
  • 我写了个问题重现的例子,链接或者代码将会贴在下面。

Reproduce Example Link or Code Fragment

在我给map的zooms设置了自定义的[3,20]后。控制台出现警告信息“'zooms' 是一个静态属性,地图实例创建成功后无法修改 ”

经过查看发现是react-amap/lib/map/index.js的219行的判断返回了true。

该实际判断(237行)在[3,20]!==[3,20]返回的是true。但实际上我们应该是希望这里返回false的,
因为该值前后其实没有发生变化。
237行的判断应该是没有考虑到数组。
所以这应该是个bug

image
image

What is Expected?

What is actually happening?

Clago commented
const zooms = [10,20];

<Map 
   ...
   zooms={zooms}
   expandZoomRange
/>

zooms变量提出来不会报这个warning了。这个和react的render机制有关,每次render的数组是新创建的,不是同一个引用。
这项目看来已经死了,没人维护了,emm.

对哦,在render外面声明一个变量的话,那每次render后前一次和这一次对比的话就是同一个引用了。还真没想到这个。多谢。
另外发现一个新的用react封装的高德地图库。后面的项目用这个了,感觉还可以。