用布尔值反应对象的setState

时间:2018-07-27 15:36:54

标签: javascript reactjs copy setstate

我一直在网上寻找该问题的答案,尽管我发现了很多与此相关的文章和文章,但我仍然不知道为什么这对我不起作用。

  setTimeout(()=> {
    let markerCopy = {...this.state.previousMarker}

    this.state.previousInfoWindow.close()
    this.state.previousMarker.setLabel(null)
    markerCopy.infowindow = false

    this.setState({
      previousMarker: {
        markerCopy,
      }
    })
  },50)

这是我最近对一段代码的尝试,该代码应复制previousMarker中包含的this.state对象,然后将布尔值infowindow设置为{{1 }}的副本,最后应将状态为false的副本替换为该副本。在此过程中某个地方不起作用。

以前我只是在使用previousMarker,但是很明显,这是直接在改变状态并且对此不满意。

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

  setTimeout(() => {
  let markerCopy = { ...this.state.previousMarker };

  this.state.previousInfoWindow.close()
  this.state.previousMarker.setLabel(null)
  markerCopy.infowindow = false;
  this.setState({ previousMarker: markerCopy }, () =>
    console.log(this.state.previousMarker)
  );
}, 50);

答案 1 :(得分:0)

好的,所以我弄清楚发生了什么!我认为问题是传播者,我认为我需要。解决方法是这样:

    let markerCopy = this.state.previousMarker

    markerCopy.infowindow = false

    this.setState({ previousMarker: markerCopy })

感谢帮助人员。