2016-12-24 3 views
0

Hallo an alle und merry x-mas ich geschaffen habe und Aktion mit Quellcode wie folgt aus:Aktion nicht mit mapDispatchtoProps abgebildet

export const SWITCH_LANGUAGE = 'SWITCH_LANGUAGE'; 

    export function switchLanguage(language) { 

     return { 
      type: SWITCH_LANGUAGE, 
      payload: language 
     }; 
    } 

Dann möchte ich diese Aktion, um eine Stütze in meinem page.js Wie i ein Ergebnis schreiben:

import { switchLanguage } from '../actions/index'; 
... 
function mapDispatchToProps(dispatch) { 
    return bindActionCreators({ switchLanguage }, dispatch); 
} 
.. 
const switchLanguage = this.props.switchLanguage; 

Aber wenn ich einen console.log (props.switchLanguage) schreiben es zeigt mir

function() { 
     return dispatch(actionCreator.apply(undefined, arguments)); 
     } 

Warum passiert das ??

+0

i das ist das Problem const switchLanguage = this.props.switchLanguage (// Parameter) – Codesingh

+0

ein Parameter? Ich denke nicht, aber danke für Ihre schnelle Antwort :) – user7334203

+0

Also, was ist das Problem? – Codesingh

Antwort

0

Die Ausgabe, die Sie erhalten, wird erwartet. Da ist nichts falsch. Die Linie:

function() { 
    return dispatch(actionCreator.apply(undefined, arguments)); 
} 

ist die Aktion Schöpfer (switchLanguage) mit jedem in Argumente übergeben angewendet (mit apply), dann ist es in dispatch geben. Genau dafür wird bindActionCreators verwendet.

die Dokumentation nach, bindActionCreators wird verwendet, wenn Sie einige Aktion Schöpfer auf eine Komponente übergeben werden sollen, die nicht bewusst Redux ist, und Sie nicht wollen, Versand passieren oder die Redux speichern, um es . Weitere Informationen finden Sie unter http://redux.js.org/docs/api/bindActionCreators.html.

In Ihren Komponenten greifen Sie auf alle Requisiten zu, wie Sie es gerade getan haben. Wenn Sie eine Aktion versenden möchten, rufen Sie einfach this.props.switchLanguage(/*language*/) oder switchLanguage(/*language*/) an, wenn Sie die Funktion zuvor aus this.props extrahiert haben.

Alles sollte wie erwartet funktionieren, solange der Druckminderer die Aktion korrekt ausführt.

Verwandte Themen