2015-10-14 24 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)。价值; –