2016-02-05 26 views
5

Come nel titolo della domanda, io non sono in grado di marcare la casella di controllo come selezionato, su onChange caso di selectbox come questo,ReactJS quando si utilizza l'attributo HTML selezionata, reactjs non permette di selezionare la casella di controllo

<select id='featuresType' 
onChange={this.handleChange.bind(this, 'type')} > 
{this.getOptions(featuresType)} 
</select> 

erano come il handleChange è come:

handleChange: function (field, e) { 
      if (field == 'type') { 
       let selected = e.target.value; 
       this.setState({typeSelected: selected}) 
      } 
      /*Why the console is taking the previous selecte option, ex: if Locker is selectec below lone prints 'dc' */ 
      console.log(field ,',', this.state.typeSelected) 
     }, 

quando è legano al defaultValue,

defaultChecked={(this.state.typeSelected =='locker')}

  1. La casella di selezione non è in grado di contrassegnare la condizione specificata, ma manualmente potrebbe essere in grado di contrassegnare selezionata/non selezionata.

checked={(this.state.typeSelected =='locker')}

  1. Su questo controllato attributo, la casella di controllo è in grado di contrassegnare come verificato, sulla base di selezionare il valore dell'opzione di dialogo. MA in questo caso il modo manuale di controllo o di non controllo non sta accadendo.

Spero che voi ragazzi ottenuto il mio problema

Ecco l'JSFiddle

Volevo che la casella di controllo per agire in entrambe le direzioni, a selezionare l'opzione, la casella di controllo deve essere controllato. E anche l'utente può selezionare/deselezionare la casella di controllo manully

risposta

1

React Docs says:

setState() non mutare subito this.state ma crea una transizione di stato sospeso. L'accesso a this.state dopo aver chiamato questo metodo può potenzialmente restituire il valore esistente.

Non vi è alcuna garanzia di funzionamento sincrono delle chiamate su setState e le chiamate possono essere raggruppate per guadagni di prestazioni.

Problemi correlati