react-amap icon indicating copy to clipboard operation
react-amap copied to clipboard

Markers通过click事件render修改样式后出现两个实例

Open AllanJian opened this issue 6 years ago • 2 comments

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

Reproduce Example Link or Code Fragment

markerEvents = {
    // markers加载完运行
    created: markers => {
      });
    },
    click: (e, marker) => {
      marker.render(this.renderClickLayout);
    },
 };
  renderClickLayout = extData => {
    this.setState({
      selectedMarker: extData.id,
    });
  };
  renderMarkersLayout = extData => {
    if (extData.id === this.state.selectedMarker) {
      return <IconA />
    }
    return <IconB />;
  };

React组件的render中的

<Markers
            markers={someData}
            events={this.markerEvents}
            render={this.renderMarkersLayout}
          />

What is Expected?

期望是选择一个marker后该marker展示不同的样式, 已经实现,

What is actually happening?

实现了选中marker样式变化, 但拖动map或zoom改变后晃动鼠标会在该位置出现两个重合的不同的样式的marker 猜测是click事件中调用的render创建了新的marker实例而没有销毁旧的

AllanJian avatar Oct 26 '18 07:10 AllanJian

请问你是使用了严格模式吗????我使用严格模式也是遇到了同样的问题

NathanHan1 avatar Jan 16 '19 11:01 NathanHan1

我重写了Markers的组件,发现就是没有销毁以前的实例,导致最后会内存溢出,直到浏览器崩溃

yjgeek avatar Jul 23 '19 13:07 yjgeek