[英]React.js - TypeError: Cannot read property 'catch' of undefined
组件LoginForm具有以下代码:
class LoginForm extends React.Component {
.................................................................
onSubmit = (e) => {
e.preventDefault();
const errors = this.validate(this.state.data);
this.setState({ loading: true});
this.props.submit(this.state.data).catch(console.log("errors"));
}
.....................................................................
}
LoginForm.PropTypes = {
submit: PropTypes.func.isRequired
};
export default LoginForm;
当我提交按钮时,出现错误TypeError:无法读取未定义的属性“ catch”
组件登录页面
class LoginPage extends React.Component {
submit = data => {
this.props.login(data).then(() => this.props.history.push("/"));
}
render() {
return(
<div className="login-page">
<main>
<div className="login-block">
<img src="assets/img/logo.png" alt=""/>
<h1>Log into your account</h1>
<LoginForm submit={this.submit} />
</div>
<div className="login-links">
<a className="pull-left" href="user-forget-pass.html">Forget Password?</a>
<a className="pull-right" href="user-register.html">Register an account</a>
</div>
</main>
</div>
);
}
}
LoginPage.propTypes = {
history: PropTypes.shape({
push: PropTypes.func.isRequired
}).isRequired,
login: PropTypes.func.isRequired
};
export default connect(null, {login})(LoginPage);
动作/授权
import { USER_LOGGED_IN } from "../types";
import api from "../api";
export const userLoggedIn = user => ({
type: USER_LOGGED_IN,
user
});
export const login = credentials => dispatch =>
api.user.login(credentials)
.then(user => dispatch(userLoggedIn(user)));
您能否解释为什么未定义的捕获量? 函数使用promise then()提交返回结果。
您应该将catch
移至LoginPage
:
submit = data => {
this.props.login(data)
.then(() => this.props.history.push("/"))
.catch(console.log)
}
并在需要时将错误作为LoginForm
传递给LoginForm
。
删除承诺中的{}。 应该是这样
submit = data => this.props.login(data).then(() => this.props.history.push("/"));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.