2016-12-24 15 views
0

Привет всем и веселые х фонтанные Я создал и действия с исходным кодом, как это:Действия не отображается с mapDispatchtoProps

export const SWITCH_LANGUAGE = 'SWITCH_LANGUAGE'; 

    export function switchLanguage(language) { 

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

Тогда я хочу, чтобы это действие опоры в моем page.js Как в результате я пишу:

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

Но когда я пишу console.log (props.switchLanguage) он показывает мне

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

Почему это происходит ???

+0

i это проблема const switchLanguage = this.props.switchLanguage (// параметр) – Codesingh

+0

параметр? я не думаю так, но спасибо за ваш быстрый ответ :) – user7334203

+0

так в чем проблема? – Codesingh

ответ

0

Ожидается выход, который вы получаете. Там нет ничего плохого. Линия:

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

является создателем действия (switchLanguage) с любым принят в качестве аргументов, применяемых (с apply), то она передается в dispatch. Это именно то, для чего используется bindActionCreators.

Согласно документации, bindActionCreators используется, когда вы хотите передать некоторые создатели действий вниз к компоненту, который не знает о Redux, и вы не хотите, чтобы передать депешу или магазин Redux к нему , См. Больше на http://redux.js.org/docs/api/bindActionCreators.html.

В ваших компонентах вы получаете доступ к любым реквизитам, как вы это делали. Затем, когда вы хотите отправить действие, просто вызовите this.props.switchLanguage(/*language*/) или switchLanguage(/*language*/), если вы ранее извлекли функцию из this.props.

Все должно работать должным образом, если ваш редуктор правильно обрабатывает действие.