2015-07-20 6 views
7

ich herausgefunden, wie zu verwenden, reagieren-Bootstrap eine Dropdown-Liste angezeigt werden:React-Bootstrap, wie der Wert der Dropdown-Liste zu erfassen

<DropdownButton bsStyle="success" title="Choose" onSelect={this.handleSelect} > 
    <MenuItem key="1">Action</MenuItem> 
    <MenuItem key="2">Another action</MenuItem> 
    <MenuItem key="3">Something else here</MenuItem> 
</DropdownButton> 

Aber wie bin ich nehme an den Handler schreiben für onSelect die erfassen Option ausgewählt? Ich habe versucht, dies aber nicht wissen, was im Innern schreiben:

handleSelect: function() { 
    // what am I suppose to write in there to get the value? 
}, 

Auch ist es eine Möglichkeit, eine Option zu setzen standardmäßig ausgewählt werden?

Vielen Dank!

Antwort

10

Die onSelect Funktion wird der ausgewählte Wert übergeben

<DropdownButton title='Dropdowna' onSelect={function(evt){console.log(evt)}}> 
    <MenuItem eventKey='abc'>Dropdown link</MenuItem> 
    <MenuItem eventKey={['a', 'b']}>Dropdown link</MenuItem> 
</DropdownButton> 

In diesem Fall, wenn Sie die erste Option wählen, ‚abc‘ gedruckt wird, in der zweiten Option, die Sie ein Objekt sehen kann übergeben werden auch.

Also in Ihrem Code

handleSelect: function (evt) { 
    // what am I suppose to write in there to get the value? 
    console.log(evt) 
}, 

Ich bin mir nicht sicher, was Sie von einem Standardwert bedeuten, da dies kein select - der Button-Text ist, was im Titel-Attribut ist. Wenn Sie mit einem Standardwert arbeiten möchten, können Sie einfach einen Wert eingeben, wenn der Wert null ist.

+0

Ehrfürchtig, danke! Lassen Sie mich meine zweite Frage klären. Ich habe drei Optionen in meiner Dropdown-Liste. Ich möchte, dass die erste Option standardmäßig ausgewählt wird. Was ist der richtige Weg, dies zu erreichen? Danke noch einmal! Oh, auch, wo hast du die Dokumentation zu 'eventKey' gefunden? Ich habe die Seite von react-bootstrap durchgesehen und konnte sie nicht finden ... – Cheng

+2

Hmm, ich denke, das Problem sind diese Menüpunkte. Die Erwartung ist, dass etwas passieren soll, wenn der Benutzer etwas aus dem Dropdown auswählt. Es hat nicht das Konzept eines aktuellen Werts. Wenn Sie versuchen, ein Formular wie Element zu haben, wo der Benutzer eine Option wählen kann, und dann weitermachen möchten, könnten Sie eine Suche noveyak

+0

machen, bemerkte ich ein seltsames Problem. '' Dann schrieb ich innerhalb von 'handleSelect'' this.setState ({value: index}); console. log (this.state.value); 'Wenn ich die Konsolenausgabe lese, scheint der Wert hinterher zu liegen. Bedeutung, wenn ich einen Artikel zum ersten Mal auswähle. Die Konsole würde den Standardwert der Statusvariablen ausgeben. Wenn ich ein anderes Element auswähle, würde die Konsole den Wert meiner vorherigen Auswahl ausgeben. Weißt du, warum das passiert? – Cheng

4

Sie, dass eventKey als zweiter Parameter übergeben vergessen zu erwähnen, ist dies die richtige Form, den Wert zu erhalten, was Sie angeklickt:

handleSelect: function (evt,evtKey) { 
    // what am I suppose to write in there to get the value? 
    console.log(evtKey) 
}, 
1

Möglicherweise möchten Sie für die Formcontrol >> wählen Sie Komponente verwenden Ihr Fall:

<FormControl componentClass="select" placeholder="select"> 
     <option value="select">select</option> 
     <option value="other">...</option> 
    </FormControl> 
Verwandte Themen