【问题标题】:undefined is not an object (evaluating '_this2.getInfoFromToken')undefined 不是对象(评估 '_this2.getInfoFromToken')
【发布时间】:2021-04-28 08:03:53
【问题描述】:

我在这个类组件里面写了两个函数

facebooklogin = () => {
    console.log('fblogin');
    LoginManager.logInWithPermissions(['email', 'public_profile']).then(
      function (result) {
        if (result.isCancelled) {
          console.log('Login cancelled');
        } else {
          console.log(
            'Login success with permissions: ' +
            result.grantedPermissions.toString(),
          );
          AccessToken.getCurrentAccessToken().then(data => {
            // console.log(data);
            // console.log(data.accessToken.toString());
            const accessToken = data.accessToken.toString();
            this.getInfoFromToken(accessToken);
          });
        }
      },
      function (error) {
        console.log('Login fail with error: ' + error);
      },
    );
  };
getInfoFromToken = token => {
console.log(token);
},

当我调用 facebooklogin() 时,它会显示此错误 可能的未处理承诺拒绝(id:4): TypeError: undefined is not an object (evalating '_this2.getInfoFromToken')

【问题讨论】:

  • 如果在 getCurrentAccessToken 回调中移动 getInfoFromToken 逻辑会怎样?

标签: react-native


【解决方案1】:

当调用this.getInfoFromToken(accessToken); 时,您尝试从function 访问this,在严格模式下等于undefined

您可以尝试将其设为箭头函数,这将使内部this 引用适用于上下文this,这似乎是上面代码中的目的。

您只需要更改第 4 行:

      function (result) {

对于箭头函数声明:

      (result) => {

有效果吗?

此外,您可能希望将.catch() 回调添加到AccessToken.getCurrentAccessToken() 承诺链(如果它返回类似承诺的对象,看起来)。

【讨论】:

    猜你喜欢
    • 2017-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-01
    • 2015-07-16
    相关资源
    最近更新 更多