0

在 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 。然后认为它可能是一个包装在一个承诺中的承诺,但事实并非如此。

4

1 回答 1

0

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

于 2018-03-21T18:04:27.913 回答