首页 > 解决方案 > undefinend 不是函数 this.setState 反应原生

问题描述

我正在开发一个反应原生应用程序。当我尝试执行以下代码时出现错误。但是同一文件其他部分的 setStates 工作正常。

未定义不是一个函数(评估'this.setState({firebaseMessages:“错误密码”})

 .catch(function(error) {
    var errorCode = error.code;
    var errorMessage = error.message;

    if (errorCode === "auth/wrong-password") {
      //alert("Wrong password.");
      this.setState({ firebaseMessages: "Wrong password" });
      this.setState({ isModalVisibleFirebase: true });
      this.setState({ loading: false })
      return;
    } else {
      alert(errorMessage);
      return;
    }
    console.log(error);
  }

标签: androidreact-nativeundefinedsetstate

解决方案


如果你使用 ES5 的函数定义方式,你的this作用域将会改变,使用箭头语法来保持this作用域。

所以现在你应该.catch((error) => {.catch(function (error){

.catch((error) => {
    var errorCode = error.code;
    var errorMessage = error.message;

    if (errorCode === "auth/wrong-password") {
      //alert("Wrong password.");
      this.setState({ firebaseMessages: "Wrong password" });
      this.setState({ isModalVisibleFirebase: true });
      this.setState({ loading: false })
      return;
    } else {
      alert(errorMessage);
      return;
    }
    console.log(error);
  }

推荐阅读