2015-10-14 13 views
5

Ich erstelle dynamisch mehrere Texteingaben (mit dynamisch erstellten Referenzen) neben dem Text, der mit der Eingabe aktualisiert werden soll.React Suche DOM-Knoten von Refs auf Variable gesetzt?

Ich versuche, den Wert der Eingabe zu erhalten, indem die ref auf eine Variable Einstellung und die DOM-Knoten mit React.findDOMNode (this.refs.Variable) finden .value

ich ein „nicht lesen kann ich immer Eigenschaft 'Wert' von Null "Fehler.

Wie kann ich das erreichen? Diese

ist, was die Funktion wie folgt aussieht:

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: '' 
    }); 
}, 

Antwort

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

findet den DOM-Knoten für die Komponente mit dem ref "refID". Wenn Sie den DOM-Knoten für die Komponente mit dem ref refID (die Variable) finden wollen, müssen Sie

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

Danke, das hat funktioniert! –

+4

Ich denke, es wäre "ReactDOM.findDOMNode" nicht "React.findDOMNode" –

0

ich bin immer Fehler "Can not Eigenschaft 'Wert' null" gesetzt ist.

Zwei mögliche Fälle:

  • die ID falsch ist. Überprüfen Sie weiteren Code oder log, um zu überprüfen, die ID ist, was Sie denken, es ist
  • Aufruf zu früh: Sind Sie sicher, dass componentDidMount aufgerufen wurde?
+0

Die ID ist korrekt, und Meteor (denke ich) handhabt das componentDidMount. Das Problem besteht darin, "this.refs" mit einer Variablen zu finden. –

+0

Zum Beispiel: var A = foo; React.findDOMNode (this.refs.A) .value; –