javascript - Action 必须是普通对象。使用自定义中间件进行异步操作 - React Native Redux

标签 javascript reactjs react-native redux redux-thunk

一些背景:当我使用简单的 .then() 链接获取和分派(dispatch)响应时,我能够让一切正常工作。我现在遇到的错误是当我尝试使我的操作异步并在 promises 上使用 await 时。

注意:我使用的是 redux thunk。

Action .js:

export const onLoginPressed = async (params) => async (dispatch) => {
  try {
    const loginResp = await fetch("http://localhost:8000/api-token-auth/", {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
      },
      body: JSON.stringify(params)
    })

    let res = await loginResp.text();
    if (response.status >= 200 && response.status < 300) {
      let accessToken = res;
      dispatch(storeToken(accessToken));
    } else {
      let error = res;
      dispatch(failToken())
      throw error;
    }
  } catch (e) {
    console.log(e)
  }

}

export const failToken = () => {
  return {
    type: FAIL_TOKEN
  }
}

export const storeToken = (token) => {
  return {
    type: CREATE_TOKEN,
    token: token
  }
}

最佳答案

async 关键字将确保返回一个 promise,而您不想返回一个 promise,而是一个函数。

从第一个函数中删除 async 关键字,它将按预期工作。

export const onLoginPressed = (params) => async (dispatch) => {
  // ...
}

关于javascript - Action 必须是普通对象。使用自定义中间件进行异步操作 - React Native Redux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51580380/

相关文章:

javascript - Node.js:如何从请求正文中获取调用 POST 的页面的 URL?

javascript - 如何将 uploadcare 导入到react.js 项目中?

javascript - 一次将相同的 Prop 传递给子元素

javascript - 全屏覆盖在页面加载时打开

javascript - 如何在 Node 中使用全局 URLSearchParams

reactjs - "Did not retain recoil value on render, or committed after timeout elapsed. This is fine, but odd. undefined"是什么意思?我该如何解决?

reactjs - react native 运行安卓挂起

javascript - React Native - Android - 全局禁用后退按钮的问题

ios - React Native 中的 Dimension.get ('window' ).width 根据 SplashScreen 方向而不是当前方向?

javascript - 我想要一个小的 javascript HTML 片段?