簡體   English   中英

用布爾值反應對象的setState

[英]React setState of object with boolean

我一直在網上尋找該問題的答案,盡管找到了許多與此相關的帖子和​​文章,但我仍無法弄清楚為什么這對我不起作用。

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

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

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

這是我對代碼段的最新嘗試,該代碼應復制this.state包含的previousMarker對象的副本,然后將該副本的布爾infowindowfalse ,最后應使用該副本替換處於狀態的previousMarker 一路走來,這是行不通的。

以前,我只是使用this.state.previousMarker.infowindow = false ,但是顯然這是直接改變狀態,因此this.state.previousMarker.infowindow = false

任何幫助,將不勝感激。

  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);

好的,所以我知道發生了什么! 我認為問題是傳播者,我認為我需要。 解決方法是:

    let markerCopy = this.state.previousMarker

    markerCopy.infowindow = false

    this.setState({ previousMarker: markerCopy })

感謝您的幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM