我正在使用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约定正确使用了状态?
答案 0 :(得分:1)
我唯一推荐的是删除此行:
this.state.polygon.setMap(null);
这是一个在React中不建议使用的状态突变。这几乎总是导致您的组件发生意外行为。但就您而言,由于您要跟进
this.setState({
polygon: null
});
试图完成同一件事的效果不明显。否则,您的代码看起来仍然不错。
要创建多边形对象的副本,您可以执行以下操作
const polygon = {...this.state.polygon}
然后您可以从那里对对象方法进行所需的更新:)