大家好,快乐的x-mas 我已经使用这样的源代码创建并执行了操作:
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 :(得分: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
。
只要您的reducer正确处理操作,一切都应该按预期工作。