2017-06-03 65 views
1

我正在使用react和basic flux來執行數據錄入Web應用程序。 因此,我有一個與商店通信的根組件,獲取類似this的複雜數據對象。React - setState()不更新葉級別屬性

關於選項選擇元素的更改,我觸發了一個動作,該動作會帶來與上面類似結構的另一個相關對象。

我管理這個龐大的對象作爲我的數據錄入頁面的根狀態,並將數據作爲道具傳遞給各個組件。

該對象的葉級,我已經綁定到一個Input元素。所以當對象改變時它會改變。所有這些變化都從根組件的下列狀態變化中淡化。

MeasurementStore.getAllMeasurements().then((measurements) => { 
     this.setState({ 
      measurements : measurements 
     }); 
    }); 

但在我的情況下,葉級別的值不會對應狀態變化。但是當我添加以下內容時

MeasurementStore.getAllMeasurements().then((measurements) => { 
     this.setState({ 
      measurements : {} 
     }); 
     this.setState({ 
      measurements : measurements 
     }); 
    }); 

它開始正常工作,並且葉級值相應地改變。爲什麼會發生?

+0

你有沒有初始化你的「測量」爲空對象或只是空字符串? –

+0

作爲一個空對象! – jdc91

+0

試試這個this.setState({測量:{... measurements} }); – Panther

回答

1

想通了。 我一直在維護一個可重用的「自定義」輸入的狀態,因爲子元素是基於自己的狀態,所以變化沒有像預期的那樣流下來。

刪除狀態及其「道具」一路到最後!

經驗教訓!總是試圖提升你的狀態!