Javascript 将操作连接到组件时出错

Javascript 将操作连接到组件时出错,javascript,reactjs,redux,Javascript,Reactjs,Redux,我正在尝试使用matchDispatchtoProps连接组件 function matchDispatchToProps(dispatch) { return bindActionCreators({setAuthToken: actions.setAuthToken}, dispatch); } export default connect(matchDispatchToProps)(LogInComponent); 然后我从ajax请求中调用setAuthToken,如下所示

我正在尝试使用matchDispatchtoProps连接组件

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
。您应该传递用于连接的任何实际函数名。请使用当前代码更新您的问题,以便我可以看到它的外观。