2017-02-09 2 views
2

Gegeben wählen:versenden eine benutzerdefinierte Aktion auf redux-Form, wenn onChange eine benutzerdefinierte Komponente

export const RenderDropDown = (props) => { 
    const {values, input, label, type, meta: {touched, error, active}} = props; 

    var options = function (value, index) { 
     return <Option key={index} 
         value={value} /> 
    }; 

    return(
     <div> 
     <select {...input}> 
      <option value="">--- Select a nationality ---</option> 
      {values.map(options)} 
     </select> 
     </div> 
    ) 
} 

Eingehüllt in eine Redux-Form Feldkomponente

<Field name="nationality" component={RenderDropDown} values={props.nationalities}/> 

Ich möchte, dass, wenn select Feuer "onChange" Ereignis, eine benutzerdefinierte Aktion wird neben der Aktion Redux-Formular ausgelöst (AKA @@ redux-form/change)

Wie kann ich das erreichen?

Ich habe versucht, durch Requisiten die Funktion zu übergeben und einen OnChange-Handler auf <select> Tag setzen, aber dies überschreibt die Redux-Form onChange.

Jede Hilfe wird geschätzt!

Antwort

4

Sie müssen das Redux-Formular onChange manuell in Ihrem eigenen benutzerdefinierten onChange aufrufen, um den redux-form-Wert zu aktualisieren. Wie so:

const { onChange, ... } = props; 
... 
<select onChange={(e) => { 
    const val = e.target.value 
    // whatever stuff you want to do 
    onChange(val) 
}} /> 
+1

Hey @inostia danke für deine Antwort. Ich habe die Antwort gefunden. sieht so aus als wäre es bereits implementiert aber ich habe es auf irgendeine Weise verpasst: https://github.com/erikras/redux-form/releases Event callbacks! - Sie können nunChange, onBlur, onFocus, etc. Requisiten an Field ... weiterleiten. –

+0

Danke @VicensFayos. Ich habe redux-form 5.x.x verwendet, aber jetzt auf 6.5.x aktualisiert. Also, wenn Sie onChange direkt an weitergeben ruft es automatisch die Redux-Form onChange nach deins? (d. h. um den Feldwert in dem Redux-Form-Speicher zu aktualisieren) – inostia

Verwandte Themen