ElemeFE / react-amap

基于 React 封装的高德地图组件。AMap Component Based On React.
https://elemefe.github.io/react-amap/articles/start
MIT License
1.03k stars 151 forks source link

Markers 组件在重新渲染时,初始数据一直被保留了 #237

Open hiveer opened 4 years ago

hiveer commented 4 years ago

问题描述

在首次渲染Markers组件的时候传入了一批点,然后通过click事件重新刷新markers的数据,组件重新渲染,但是第一批传入的点始终存在,并没有被生成的新的点刷新。

重现示例

示例中包含了相应的React的版本,以及react-amap的版本

https://github.com/hiveer/amap-app

image Markers 组件再渲染的时候会渲染出两倍的marker节点,也就是我传入2个点,会渲染出4个来,只重合了所以看起来还是两个

hiveer commented 4 years ago

image 同样的问题在Marker组件也有,我用的是Marker组件,但是在生成的模板中存在两个marker,同样的参数,当我通过事件再去刷新的时候,只有其中给一个会被刷新,另外一个保持不变了。

linjinglan commented 3 years ago

请问问题解决了吗?我也刷新不了点 @hiveer

linjinglan commented 3 years ago

请问问题解决了吗?我也刷新不了点 @hiveer

markers/index.js里refreshMarkersLayout中有一句,判断数组是否相等。 var markerChanged = nextProps.markers !== this.props.markers; 额,deepclone一下就行了

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

问题描述

在首次渲染Markers组件的时候传入了一批点,然后通过click事件重新刷新markers的数据,组件重新渲染,但是第一批传入的点始终存在,并没有被生成的新的点刷新。

重现示例

示例中包含了相应的React的版本,以及react-amap的版本

https://github.com/hiveer/amap-app

image Markers 组件再渲染的时候会渲染出两倍的marker节点,也就是我传入2个点,会渲染出4个来,只重合了所以看起来还是两个

看了repo之后,这个问题应该是strictMode的重复渲染问题导致的。 https://github.com/facebook/react/issues/17786