2016-02-05 8 views
5

Wie in der Frage Titel zu wählen, bin ich nicht in der Lage das Kontrollkästchen zu markieren, wie ausgewählt, auf onChange Ereignisse des selectbox wie diese,ReactJS wenn HTML-Attribut geprüft Verwendung reactjs ermöglicht es nicht, das Kontrollkästchen

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

wurden als handleChange ist wie:

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) 
     }, 

wenn es um default binden wird,

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

  1. Die Auswahlbox kann die angegebene Bedingung nicht markieren, aber sie kann manuell markiert/nicht geprüft werden.

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

  1. Auf dieses Attribut aktiviert, wird die Checkbox in der Lage, als geprüft zu markieren, basierend auf Auswahlfeld Optionswert. ABER in diesem Fall passiert die manuelle Art der Überprüfung oder Un-Überprüfung nicht.

Hoffe ihr mein Problem bekamen

Hier ist die JSFiddle

ich die Checkbox in beiden Richtungen handeln wollte, bei der Auswahl der Option, sollte das Kontrollkästchen aktiviert werden. Und auch können Benutzer aktivieren/deaktivieren Sie das Kontrollkästchen manully

Antwort

1

React Docs says:

setState() nicht sofort this.state mutieren, sondern schafft einen anstehend Übergang. Der Zugriff auf this.state nach dem Aufruf dieser Methode kann möglicherweise den vorhandenen Wert zurückgeben.

Es gibt keine Garantie für den synchronen Betrieb von Aufrufen von setState , und Anrufe können für Leistungssteigerungen gebündelt werden.