ReactJS如何在状态下处理对象的方法?

时间:2019-05-25 20:19:06

标签: javascript reactjs

我正在使用Google Maps API,并且具有以下这段代码-

      class App extends React.Component {
          state = {
               polygon: null,
           };

          checkPoly() {
             if (this.state.polygon) {
               this.state.polygon.setMap(null);
               this.setState({
                  polygon: null
                });
              }
           }

          initPoly(evt) {
            let polygon = evt.overlay;
            polygon.setEditable(true);
            this.setState({
                polygon: polygon
            });
           }
      }

关于如何在状态this.state.polygon.setMap(null)的状态下将值传递给对象的方法,我感到困惑。我不知道我是否以正确的方式做事,但是可以。你能告诉我我是否按照ReactJS约定正确使用了状态?

1 个答案:

答案 0 :(得分:1)

我唯一推荐的是删除此行:

this.state.polygon.setMap(null);

这是一个在React中不建议使用的状态突变。这几乎总是导致您的组件发生意外行为。但就您而言,由于您要跟进

this.setState({
    polygon: null
});
试图完成同一件事的

效果不明显。否则,您的代码看起来仍然不错。

要创建多边形对象的副本,您可以执行以下操作

const polygon = {...this.state.polygon}

然后您可以从那里对对象方法进行所需的更新:)