2017-02-26 49 views
0

因此,我檢查我的componentWillReceiveProps函數中已更改的道具。但我得到一個空錯誤。代碼:無法讀取componentWillReceiveProps中nextProps的屬性值

componentWillReceiveProps(nextProps) { 
     if (this.props.author.id!= nextProps.author.id) { 
      debugger; 
      this.setState({author: Object.assign({}, nextProps.author)}); 
     } 
    } 

當設置debbugger我似乎有值,但隨後鉻說,這是不確定的: Image of error

請告訴我,使我更糊塗的是,當我添加一個調試器的代碼runthrough ,它沒有給我任何錯誤,筆者即時得到來自被填充到輸入字段的nextProps,但我仍然得到上述錯誤之後

enter image description here

回答

0

我確定它在變量未定義時發生。

這個代碼如何得到滿足?

componentWillReceiveProps(nextProps) { 
    if ((this.props.author && this.props.author.id) !== (nextProps.author && nextProps.author.id)) { 
+0

這裏您比較兩個布爾值,而不是檢查它們是否存在然後進行比較。它應該是 'if((this.props.author && nextProps.author)&&(this.props.author.id!== nextProps.author.id)){',它只會執行第二次檢查,如果兩者都是被定義。 –

+0

你的代碼很好。但兩者都很好。 –

+0

這些例子都不起作用。我可以看到,我兩次打這個函數,第一次props.author被填充,但nextProps.author是未定義的。第二次this.props.author未定義,但nextProp已填充。由於其中一個在每種情況下都缺失,我知道根本不設置作者狀態。 兩個想法,爲什麼我要兩次輸入這個函數,爲什麼componentWillReceiveProps的每個propportion都是空的? –