aws-amplify在currentSession()上使用.then时仍然返回一个promise

时间:2018-03-20 08:23:35

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

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

我的问题是,即使我使用。然后我总是得到一个承诺,结果看起来像这样:

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连接器中运行它,或者直接在页面上运行它也似乎无关紧要,也尝试加倍。然后认为它可能是承诺中的承诺,但事实并非如此任

1 个答案:

答案 0 :(得分:0)

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