我在我创建的react组件中有以下构造函数和函数。
constructor() {
super()
this.state = {
error: false
}
}
handleSubmit(e) {
e.preventDefault()
const email = this.refs.email.value
const password = this.refs.password.value
const self = this
firebase.auth().signInWithEmailAndPassword(email, password).then(
function(result) {
const location = self.props.location
if (location.state && location.state.nextPathname) {
self.context.router.replace(location.state.nextPathname)
} else {
self.context.router.replace("/home")
}
// User signed in!
console.log("User signed in!")
}).catch(function(error) {
this.setState({error: error}) // Error points to this line
})
}
我在控制台中一直收到以下错误:
未捕获的TypeError:无法读取未定义的属性“setState”
任何人都可以帮我确定问题吗?
答案 0 :(得分:2)
在以下代码中,当您使用' self'
时,您使用' this'catch(function(error) {
this.setState({error: error}) // Error points to this line
})
应该是
catch(function(error) {
self.setState({error: error}) // Error points to this line
})