function mapDispatchToProps(dispatch) {
return {
actions: bindActionCreators(Object.assign({},LoginActions), dispatch)
};
}
在组件中,我有这个功能:
constructor(props) {
super(props);
this.onLogin = this.onLogin.bind(this);
}
onLogin(loginType){
LoginActions.loginAction(this.state.user.username, this.state.user.password, loginType, [] , "")
}
我相信LoginActions.loginAction
应该可以发送动作,但看起来不行。
它永远不会返回使用redux thunk>
例如:
export function loginAction(email, password, loginType, products, productIds){ //thunk always returns a function that accepts a dispatch
console.log("IN LOGIN ACTION")
console.log("email", email);
console.log("password", password);
console.log("login type", loginType)
console.log("products", products)
console.log("productids", productIds) //comma separated list of product Id's
return function (dispatch) {
console.log("dispatch)
return LoginAPI.directLogin(cookie.load('sessionID'), email, password, loginType, products, '')
.then(userinfo => {
dispatch(login(userinfo))
}).catch(err=> {
console.log("error occured", err)
throw(err);
});
在上面的函数中,所有的控制台语句都被打印出来但它从不打印" dispatch"。我想我并没有把它称为正确的方式。我得到了帮助
答案 0 :(得分:1)
绑定动作时,它会返回您要映射到actions
的对象。这意味着您可以致电this.props.actions.loginAction(...)
并将其发送。
它不会以任何方式改变函数本身,所以如果你调用函数它只会执行函数所做的任何事情,但不会在任何地方发送它。
答案 1 :(得分:1)
如果您使用mapDispatchToProps进行连接,您将使用以下方式调度操作:
BaseVisitor