2015-03-29 12 views
6

hoReact.findDOMNode si presenta come indefinita

<div id="wrapper"></div> 

<script type="text/jsx"> 
/* @jsx React.DOM*/ 
var Login = React.createClass({ 
    Validate: function(){ 
     debugger; 
     var username = React.findDOMNode(this.refs.username).trim(); 
     var password = React.findDOMNode(this.refs.password).trim(); 
     console.log('Username: ' + username + '\nPassword: ' + password); 
     if(username == 'username' && password == 'password'){ 
      alert('Success'); 
     } 
     else{ 
      alert('Failure'); 
     } 
    }, 
    Clear: function(){ 

    }, 
    render: function(){ 
     return(
      <div className="container"> 
       Login 
       <p></p> 
       Username: <input type="text" ref="username" /><br /> 
       Password: <input type="password" ref="password" /><br /><br /> 
       <input type="button" value="Submit" onClick={this.Validate} />&nbsp;&nbsp; 
       <input type="button" value="Clear" onClick={this.Clear} /> 
      </div> 
     ); 
    } 
}); 

React.render(<Login />, document.getElementById('wrapper')) 
</script> 
+0

non possono riprodurre: http://jsfiddle.net/gaqs3p17/. Ottengo 'TypeError: React.findDOMNode (...). Trim non è una funzione', il che ha senso, dal momento che' findDOMNode' restituisce un elemento DOM, non una stringa. Non restituisce "indefinito". Se si intende che 'React.findDOMNode' è' indefinito', è necessario aggiornare la versione di React. È stato introdotto nella versione 1.1.0 di AFaik. –

+1

Sì, stavo usando v0.12.1. Anche React.findDOMNode (this.refs.username) .value funziona in v0.13 – user544079

+0

Sì, aggiungendo '.value' funziona, poiché gli elementi' input' hanno una proprietà 'value'. –

risposta

10

React.findDOMNode è stato introdotto nel Reagire v0.13, in modo da assicurarsi che si sta utilizzando almeno v0.13.

6

In React v0.13 utilizzare React.findDOMNode().

Nelle versioni precedenti, ad es. v0.12 è possibile utilizzare component.getDOMNode()

this.refs.myRef.getDOMNode(); 

Per sostenere modelli basati ES6 andando avanti, la squadra Reagire aggiunto React.findDOMNode(component) da utilizzare al posto di component.getDOMNode().

0

Questo potrebbe non essere molto rilevante per il codice di cui con la domanda di cui sopra, tuttavia un paio di altri controlli dal di reagire docs sono:

  1. "Quando il rendering restituisce NULL o falso, findDOMNode restituisce null. "
  2. "findDOMNode non può essere utilizzato su componenti funzionali."

Spero che questo aiuti qualcuno nel bisogno.

1

React.findDOMNode

è stato deprecato, utilizzare

ReactDOM.findDOMNode

in Reagire 15.1 e fino

Problemi correlati