【问题标题】:aws-amplify still returning a promise when using .then on currentSession()在 currentSession() 上使用 .then 时,aws-amplify 仍然返回一个承诺
【发布时间】:2018-08-28 23:31:38
【问题描述】:

在 React / Redux 中,我正在尝试使用 redux connect 将 aws-amplify 会话数据映射到道具。

我的问题是,即使我使用 .then 我总是得到一个返回的承诺,结果看起来像这样:

Promise {<resolved>: CognitoUserSession}
  __proto__: Promise
  [[PromiseStatus]]:"resolved"
  [[PromiseValue]]:CognitoUserSession

代码如下。

import { connect } from 'react-redux';
import LoginForm from './LoginForm';
import {Auth} from 'aws-amplify';

export const mapStateToProps = (state) => { return {}; };
export const mapActionsToProps = () => {
  const session = Auth.currentSession().then((res) => { return res });
  return {
    idToken: session,
  };
};

export default connect(mapStateToProps, mapActionsToProps)(LoginForm);

我尝试使用 JSON.stringify、Promise.resolve() 等进行解析……但我总是得到承诺。

如果我在 redux 连接器中运行它,或者直接在页面上运行它似乎也没关系,也尝试过 double 。然后认为它可能是一个包装在一个承诺中的承诺,但事实并非如此。

【问题讨论】:

    标签: javascript reactjs amazon-web-services amazon-cognito aws-amplify


    【解决方案1】:

    mapActionsToProps 不是进行异步获取的最佳位置。我建议要么在组件的componentWillMount 函数中获取会话并将会话存储在组件状态中,要么创建一个 redux thunk 操作来获取并将会话存储在 redux 状态树中。

    【讨论】:

      猜你喜欢
      • 2019-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-09
      • 2018-03-10
      • 1970-01-01
      • 1970-01-01
      • 2015-11-27
      相关资源
      最近更新 更多