Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
hiveer opened this issue Sep 19, 2020 · 4 comments
Open

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

hiveer opened this issue Sep 19, 2020 · 4 comments

Comments

@hiveer
Copy link

hiveer commented Sep 19, 2020

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

问题描述

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

重现示例

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

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

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

@hiveer
Copy link
Author

hiveer commented Sep 20, 2020

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

@linjinglan
Copy link

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

@linjinglan
Copy link

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

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

@maslke
Copy link

maslke commented Oct 26, 2023

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

问题描述

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

重现示例

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

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

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

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants