React setState无法正常工作

时间:2016-10-27 14:39:48

标签: reactjs ecmascript-6 uncaught-typeerror setstate

我在我创建的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”

任何人都可以帮我确定问题吗?

1 个答案:

答案 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
})