我在react-native代码中设置了redux-thunk。
在mapDispatchToProps中我有:
const mapDispatchToProps = dispatch => {
return {
login: (state, navigator) => dispatch({
type: "USER",
payload: loginFunc(state, navigator)
}),
}'
}
login函数是一个firebase函数,它返回一个最终返回我需要的对象的promise链。
然而,在我的reducer中,看起来我的有效载荷是一个承诺或一些时髦的对象。 它看起来像:
{
a: someVal,
b: sommeOtherVal,
c: someMoreVal,
...ValsUpToI.
i: {
// The values I actually need show up
}
这让我感到困惑,因为当我尝试payload.myValue
时,我在我的redux状态下得到undefined
。我认为只是payload.i
这样做是不安全的,因为这可能是一些promise
或async
问题吗?我以后很可能会成为别的什么?
答案 0 :(得分:1)
使用异步操作方法执行redux documentation中提到的基于promise的函数API调用。
const mapDispatchToProps = dispatch => {
return {
login: (state, navigator) => {
return loginFunc(state, navigator).then(
response => dispatch({
type: "USER",
payload: response
}),
error => console.log('An error occurred.', error)
)
}
}
通过这种方式,您可以调用基于承诺的功能并正确使用响应或错误。