javascript - 即使在定义绑定(bind)后也无法读取未定义的属性 'setState'(this.submit)

标签 javascript reactjs firebase

我一直在研究 React js 并希望 setState 以获取来自 firebase 的响应。
因此,当我尝试为状态设置值时,它会返回错误,

Cannot read property 'setState' of undefined

我的代码。

class Login extends Component {
    constructor(props) {
        super(props)
        this.state = {email:'',
                    uid:'',
                    password :'',
        }
        this.handleChange = this.handleChange.bind(this)
        this.handleSubmit = this.handleSubmit.bind(this)
        this.signInWithGoogle = this.signInWithGoogle.bind(this)
    }
    handleChange(event) {
        this.setState({
            [event.target.id] : event.target.value
        })
        console.log(this.state.email)
        console.log(this.state.password)
      }
      handleSubmit(e) {
        e.preventDefault()
        firebase.auth().signInWithEmailAndPassword(this.state.email, this.state.password).then(function(result)  {
            console.log(result.user.uid)
            this.setState({ [uid]: [result.user.uid] });
        }).catch(function(error) {
            console.log(error.code)
            console.log(error.message)
            alert(error.message)
           })
      }

我确实有一个表格可以提供输入。 有人可以帮我解决这个问题吗。

最佳答案

请像这样更新您的 handleSubmit 函数

      handleSubmit(e) {
       e.preventDefault()
       firebase.auth().signInWithEmailAndPassword(this.state.email, 
       this.state.password).then((result) => {
         console.log(result.user.uid)
         this.setState({ uid: result.user.uid });
       }).catch(function(error) {
         console.log(error.code)
         console.log(error.message)
         alert(error.message)
       })
     }

此作用域仅在粗箭头函数 () => {} 内可用,所以我刚刚更新了您的函数

firebase.auth().signInWithEmailAndPassword(this.state.email, this.state.password).then(function(result)  {

firebase.auth().signInWithEmailAndPassword(this.state.email, this.state.password).then((result) =>  {

关于javascript - 即使在定义绑定(bind)后也无法读取未定义的属性 'setState'(this.submit),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58387385/

相关文章:

javascript - 错误 403 : jquery bootstrap and css

javascript - 使用 React 状态隐藏组件 onClick

firebase - 使用 Firestore Cloud Functions 进行计数

javascript - JS : Trying to test for a very specific pattern

javascript - 分配正则表达式时是否需要使用单词 "new"?

javascript - 实现延迟的 jquery 更改事件处理程序

reactjs - 使用 AWS Lambda 观看 SNS 主题并通过 websocket 进行交付?

javascript - 如果 match.params 与数据库中的 ID 不匹配则重定向 | react 路由器 V4

ios - Fabric Crashlytics 不工作。 iOS 14 应用/XCode 12

android - FCM onReceivedMessage() 获取 Bundle