2015-10-14 72 views
5

我正在動態地創建多個文本輸入(帶有動態創建的引用),並沿着我希望用輸入更新的文本。React通過將refs設置爲變量來查找DOM節點?

我試圖通過裁判設置爲一個變量,並發現與React.findDOMNode(this.refs.Variable)的DOM節點.value的

我越來越得到了輸入的值是「無法讀取屬性'值'null「錯誤。

我該如何做到這一點?

這是函數的樣子:

resetUnit: function(e){ 
    var refID = e.target.id; 
    var ID = refID.split("-")[0]; 
    var Value = React.findDOMNode(this.refs.refID).value; 
    NodesCollection.update({_id: ID},{$set: { materialUnit : Value}}); 
    this.setState({ 
    edit: '' 
    }); 
}, 

回答

9
var Value = React.findDOMNode(this.refs.refID).value; 

發現用於與REF "refID"該組件的DOM節點。如果你想找到與裁判​​(變量)組件中的DOM節點,您需要

var Value = ReactDOM.findDOMNode(this.refs[refID]).value; 
+1

謝謝你,工作! –

+4

我想這應該是'ReactDOM.findDOMNode'而不是'React.findDOMNode' –

0

我得到一個「無法讀取空的財產‘價值’」的錯誤。

兩種可能情況:

  • 的ID是錯誤的。查看進一步的代碼或log來仔細檢查ID是你認爲它是什麼
  • 調用到早期:你確定componentDidMount已被調用?
+0

ID是正確的,流星(我認爲)處理componentDidMount。問題是試圖找到一個變量「this.refs」。 –

+0

例如:var A = foo; React.findDOMNode(this.refs.A)。價值; –