在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连接器中运行它,或者直接在页面上运行它也似乎无关紧要,也尝试加倍。然后认为它可能是承诺中的承诺,但事实并非如此任
答案 0 :(得分:0)
mapActionsToProps
不是进行异步提取的最佳位置。我建议在组件的componentWillMount
函数中获取会话并将会话存储在组件状态中,或者创建一个redux thunk操作,该操作将在redux状态树中获取并存储会话。