Javascript 将操作连接到组件时出错
我正在尝试使用matchDispatchtoProps连接组件Javascript 将操作连接到组件时出错,javascript,reactjs,redux,Javascript,Reactjs,Redux,我正在尝试使用matchDispatchtoProps连接组件 function matchDispatchToProps(dispatch) { return bindActionCreators({setAuthToken: actions.setAuthToken}, dispatch); } export default connect(matchDispatchToProps)(LogInComponent); 然后我从ajax请求中调用setAuthToken,如下所示
function matchDispatchToProps(dispatch) {
return bindActionCreators({setAuthToken: actions.setAuthToken}, dispatch);
}
export default connect(matchDispatchToProps)(LogInComponent);
然后我从ajax请求中调用setAuthToken,如下所示
handleLoginButtonClick() {
var settings = {
"async": true,
"crossDomain": true,
"url": "https://trigger-backend.appspot.com/auth/login/",
"method": "POST",
"credentials": 'include',
"headers": {
"content-type": "application/x-www-form-urlencoded",
},
"data": {
"password": "apurv",
"username": "Apurv"
},
success: function( data, textStatus, jQxhr ){
alert("success");
},
}
$.ajax(settings).done((response) => {
alert(response.auth_token);
this.props.setAuthToken(response.auth_token);
console.log('check');
this.context.router.push('/app')
});
这是我的渲染组件,从中调用handleButtonClick
render(){
return (
<div className="LoginPage">
<div className="login-page">
<div className="form">
<form className="login-form">
<input id="username" type="username" placeholder="username"/>
<input id="password" type="password" placeholder="password"/>
<p className="message">Not registered? <a href="#">Request Username and Password</a></p>
</form>
<button onClick={this.handleLoginButtonClick.bind(this)}>login</button>
</div>
</div>
</div>
);
}
render(){
返回(
是否未注册
登录
);
}
但是我得到一个错误,说“分派不是一个函数”。我做错了什么?您正在传入
mapspatch
作为连接的第一个参数,而它需要作为第二个参数。您需要使用connect(null,mapDispatch)(LogInComponent)
另外,请注意,connect()
支持mapDispatch
的速记语法。您可以通过希望绑定的动作创建者传入对象,而不是传入实际函数,如:
const {setAuthToken} = actions;
export default connect(null, {setAuthToken})(LogInComponent);
当我执行connect(null,mapDispatch)(LogInComponent)时,它会给我一个错误,说Uncaught TypeError:Cannot convert undefined或null to objectSorry-参数的全名是
mapDispatchToProps
,这是您编写的函数的名称。它通常缩写为mapState
。您应该传递用于连接的任何实际函数名。请使用当前代码更新您的问题,以便我可以看到它的外观。