2016-01-22 9 views
5

Ho letto i documenti di React e ho ridotto il problema a un caso semplice, ma non riesco ancora a capire cosa sto facendo male.Perché la casella di controllo React onChange viene attivata per il rendering e quindi non quando si fa clic sulla casella?

JSFiddle: https://jsfiddle.net/justin_levinson/pyn7fLq5/ o scritta sotto:

var TestForm = React.createClass({ 
    render : function() { 
     return (
      <div> 
       <p>Test Form</p> 
       <form> 
        <TestBox /> 
       </form> 
      </div> 
     ) 
    } 
}); 

var TestBox = React.createClass({ 
    render : function() { 
     return (<input type="checkbox" name={"testbox"} defaultChecked={true} onChange={this.handleCheck()}/>) 
    }, 
    handleCheck : function(event) { 
     console.log("check"); 
     console.log(event); 
    } 
}); 

Al caricamento della pagina, ho un 'controllo' nel registro seguito da 'undefined' per l'evento, allora non si attiva nuovamente successiva scatti. Ho provato questo con sia onClick e onChange sia creando un controllo (controllato = {true}) invece che incontrollato (defaultChecked = {true}) sopra.

Grazie!

risposta

13

Perché stai già chiamando il metodo su render.

cambiamento onChange={this.handleCheck()}-onChange={this.handleCheck}

+0

E se fosse necessario inviare un parametro? – RMontes13

+0

@ RMontes13 'this.handleCheck.bind (null, parameter)' – oobgam

0

Per chiunque leggendo questo in futuro (come me), si può anche risolvere questo formattando come onClick={(e) => this.handleCheck(parameter)} se è necessario passare in un parametro.

Problemi correlati