javascript - 在带有异步调度的react-native中使用redux-thunk

标签 javascript asynchronous react-native redux redux-thunk

我在我的react-native代码中设置了redux-thunk。

在mapDispatchToProps中我有:

const mapDispatchToProps = dispatch => {
     return {
         login: (state, navigator) => dispatch({
             type: "USER",
             payload: loginFunc(state, navigator)
          }),
     }'
}

登录函数是一个 firebase 函数,它返回一个 promise 链,最终返回我需要的对象。

但是,在我的 reducer 中,我的有效负载看起来像是一个 promise 或一些时髦的对象。 它看起来像:

{ 
     a: someVal, 
     b: sommeOtherVal, 
     c: someMoreVal,
     ...ValsUpToI.
     i: {
       // The values I actually need show up
     }

这让我很困惑,因为当我尝试执行 payload.myValue 时,我的 redux 状态为 undefined 。我认为只执行 payload.i 也不安全,因为这可能是一些 promiseasync 问题,对吧?我以后很可能会成为其他人吗?

最佳答案

使用异步操作方法来执行基于 Promise 的函数 API 调用,如 redux documentation 中所述。 .

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)
        )
     }
 }

这样您就可以调用基于 Promise 的函数并正确利用响应或错误。

关于javascript - 在带有异步调度的react-native中使用redux-thunk,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49595715/

相关文章:

ios - react native 不变违规 : Element type is invalid

ios - 主题不允许的推送通知

javascript - React Native timemixin 取消定时器超时

javascript - 井号 (#) 作为评论的开始在 JavaScript 中?

C# 性能比较 : Async vs Non-Async Text File IO operation via: Read\WriteAllLines vs Read\WriteAllLinesAsync

javascript - React Native - 到处留下尾随逗号有什么意义?

javascript - 保护 jsTree 样式免受其他 jsTree 实例的影响

javascript - jQuery - 单击添加/删除类 - 多个按钮

javascript - 在回调中调用异步函数

c# - TCP套接字服务器如何判断从客户端接收到的数据何时完成?