2015-07-20 12 views
7

zorientowali się, jak korzystać reagowania-bootstrap aby wyświetlić listę rozwijaną:React-bootstrap jak uchwycić wartość listy rozwijanej

<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> 

Ale jak jestem przypuszczać, aby napisać procedurę obsługi dla onSelect uchwycić wybrana opcja? Próbowałem tego, ale nie wiem, co napisać w środku:

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

Ponadto istnieje sposób, aby ustawić opcję, która zostanie wybrana domyślnie?

Dziękujemy!

Odpowiedz

10

Funkcja onSelect przepuszcza wybraną wartość

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

W tym przypadku, jeśli wybierzesz pierwszą opcję, „abc” jest drukowany, w drugim wariancie można zobaczyć obiekt może być przekazywane w także.

Więc w kodzie

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

Nie jestem pewien co masz na myśli przez wartość domyślną, ponieważ nie jest to select - tekst przycisk jest to, co jest w atrybucie tytułowym. Jeśli chcesz obsłużyć wartość domyślną, możesz ustawić wartość, gdy wartość wynosi null.

+0

Niesamowite, dziękuję! Pozwól mi wyjaśnić moje drugie pytanie. Mam trzy opcje na mojej liście rozwijanej. Chcę, aby pierwsza opcja była domyślnie wybrana. Jaki jest właściwy sposób, aby to osiągnąć? Dzięki jeszcze raz! Och, także, gdzie znalazłeś dokumentację na 'eventKey'? Przeszukałem stronę z reaktywnym bootstrapem i nie mogłem jej znaleźć ... – Cheng

+2

Hmm, myślę, że problem polega na tym, że są to pozycje menu. Oczekuje się, że coś ma się wydarzyć, gdy użytkownik wybierze coś z rozwijanego menu. Nie ma pojęcia bieżącej wartości. Jeśli próbujesz utworzyć formularz, taki jak element, w którym użytkownik może wybrać opcję, a następnie przejść dalej, możesz chcieć spojrzeć na to noveyak

+0

zauważyłem dziwny problem. '' Następnie wewnątrz 'handleSelect', napisałem' this.setState ({value: index}), console. log (this.state.value); 'Kiedy czytam dane wyjściowe konsoli, wartość wydaje się być opóźniona. To znaczy, gdy wybieram przedmiot po raz pierwszy. Konsola wyświetli domyślną wartość zmiennej stanu. Jeśli wybiorę inny element, konsola wypisze wartość z mojego poprzedniego wyboru. Czy wiesz, dlaczego tak się dzieje? – Cheng

4

zapomniałeś wspomnieć, że eventKey jest przekazywana jako drugi parametr, jest to poprawna forma, aby uzyskać wartość co kliknąłeś:

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

może chcesz użyć FormControl >> wybierz komponent Twój przypadek:

<FormControl componentClass="select" placeholder="select"> 
     <option value="select">select</option> 
     <option value="other">...</option> 
    </FormControl> 
Powiązane problemy