Есть react-redux с компонентом Login. Я попытался связать acitons с реквизитами компонента через mapDispatchToProps, но получил ошибку:
×
TypeError: this.props.login is not a function
Вот код:
import React from 'react'
import {connect} from 'react-redux'
import * as userActions from '../actions/UserActions'
export class Login extends React.Component{
constructor(props) {
super(props)
this.login = this.login.bind(this)
}
login () {
console.info(this)
this.props.login(this.username,this.password)
}
render(){
return <div>
<div class = "login-box">
<form>
<div class = "form-group">
<label for = "exampleInputEmail1">Имя пользователя</label>
<input type = "email" class = "form-control" id = "exampleInputEmail1" aria-describedby = "emailHelp" placeholder = "Username" ref = {(input)=>{this.username = input}} />
</div>
<div class = "form-group">
<label for = "exampleInputPassword1">Пароль</label>
<input type = "password" class = "form-control" id = "exampleInputPassword1" placeholder = "Password" ref = {(input)=>{this.password = input}} />
</div>
<button class = "btn btn-primary" onClick= {this.login} >Войти </button>
</form>
</div>
</div>
}
}
const mapDispatchToProps = dispatch => {
return {
login:(username,password) => {
dispatch(userActions.login(username,password))
}
}
}
export default connect(null,mapDispatchToProps)(Login)
PS: Я использую response-redux-router, если это помогает
Также не уверен, что это будет проблемой, но добавьте попробуйте сделать mapStateToProps для ()=>{} вместо null
@TusharChutani Это не решило проблему :(
@ShubhamKhatri Это работает, большое спасибо. Вы можете отформатировать этот ответ как ответ, и я проголосую за него
@ ЮрийШиповалов Учитывая, что другой ответ решает вашу проблему, вероятно, будет правильным пометить этот как дубликат, и вы можете проголосовать за ответ и вопрос по дублирующейся ссылке
Вы забыли вернуть dispatch в функции mapDispatchToProps. Попробуйте return dispatch(userActions.login(username,password))
Можете ли вы попробовать зарегистрировать this.props в функции входа в систему?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


попробуйте это для mapDispatchToProps
const mapDispatchToProps = { login: userActions.login }