ElemeFE/react-amap

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

Opened this issue · 4 comments

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

问题描述

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

重现示例

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

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

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

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

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

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

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

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

问题描述

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

重现示例

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

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

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

看了repo之后,这个问题应该是strictMode的重复渲染问题导致的。
facebook/react#17786