Javascript TypeError:无法读取属性';然后';react redux中未定义的
这是我的loginform.js,我正在尝试使用state提交数据。 登录表单get在loginpage.js中呈现如下 在loginPage.js中,将数据提交到redux,然后使用then将页面推送到(“/”) 但问题是它从不重定向到主页,而是会出现类似这样的错误Javascript TypeError:无法读取属性';然后';react redux中未定义的,javascript,reactjs,react-redux,Javascript,Reactjs,React Redux,这是我的loginform.js,我正在尝试使用state提交数据。 登录表单get在loginpage.js中呈现如下 在loginPage.js中,将数据提交到redux,然后使用then将页面推送到(“/”) 但问题是它从不重定向到主页,而是会出现类似这样的错误 TypeError: Cannot read property 'then' of undefined LoginPage._this.submit C:/projects/login/login-react/src/compon
TypeError: Cannot read property 'then' of undefined
LoginPage._this.submit
C:/projects/login/login-react/src/components/pages/LoginPage.js:11
8 | import './login.css';
9 |
10 | class LoginPage extends React.Component {
> 11 | submit = data =>
12 | this.props.login(data).then(() => this.props.history.push("/"));
13 |
14 | render() {
View compiled
LoginForm._this.onSubmit
C:/projects/login/login-react/src/components/forms/LoginForm.js:24
21 | this.setState({errors});
22 | if(Object.keys(errors).length === 0) {
23 | this.setState({loading: true});
> 24 | this.props
25 | .submit(this.state.data)
26 | .catch(err =>
27 | this.setState({errors: err.response.data.errors, loading: false})
View compiled
▶ 23 stack frames were collapsed.
This screen is visible only in development. It will not appear if the app crashes in production.
Open your brow
loginPage.js
登录表单.js
这就是登录的样子
我想知道是否有其他方法可以这样做,或者如何修复此问题?您传递到组件中的登录道具看起来如何?我用登录道具更新了我的问题。您可以告诉我任何其他方法来完成此提交表单,然后将页面重定向到某个位置并捕获错误。
class LoginPage extends React.Component {
submit = data =>
this.props.login(data).then(() => this.props.history.push("/"));
onSubmit = () => {
const errors = this.validate(this.state.data);
this.setState({errors});
if(Object.keys(errors).length === 0) {
this.setState({loading: true});
this.props
.submit(this.state.data)
.catch(err =>
this.setState({errors: err.response.data.errors, loading: false})
);
}
};
export const login = credentials => dispatch =>{
api.user.login(credentials).then(user=> {
localStorage.loginToken = user.token;
dispatch(userLoggedIn(user));
});
}