Javascript 动作必须是普通对象。为异步操作使用自定义中间件-反应本机Redux

Javascript 动作必须是普通对象。为异步操作使用自定义中间件-反应本机Redux,javascript,reactjs,react-native,redux,redux-thunk,Javascript,Reactjs,React Native,Redux,Redux Thunk,一些背景知识:当我使用simple.then()链接获取和发送响应时,我能够让所有的东西都正常工作。我现在遇到的错误是,当我试图使我的操作异步,并在承诺上使用wait时 注意:我使用的是redux thunk actions.js: export const onLoginPressed = async (params) => async (dispatch) => { try { const loginResp = await fetch("http://localho

一些背景知识:当我使用simple.then()链接获取和发送响应时,我能够让所有的东西都正常工作。我现在遇到的错误是,当我试图使我的操作异步,并在承诺上使用wait时

注意:我使用的是redux thunk

actions.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
  }
}
export const onLoginPressed=async(params)=>async(dispatch)=>{
试一试{
const loginResp=等待获取(“http://localhost:8000/api-令牌身份验证/“{
方法:“POST”,
标题:{
“内容类型”:“应用程序/json”,
},
正文:JSON.stringify(params)
})
let res=wait loginResp.text();
如果(response.status>=200&&response.status<300){
让accessToken=res;
调度(storeToken(accessToken));
}否则{
设误差=res;
调度(failToken())
投掷误差;
}
}捕获(e){
控制台日志(e)
}
}
导出常量failToken=()=>{
返回{
类型:失败\u令牌
}
}
导出常量storeToken=(token)=>{
返回{
类型:创建\u令牌,
令牌:令牌
}
}

关键字
async
将确保返回承诺,并且您不希望返回承诺,而是返回函数

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

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

async
将确保在引擎盖下返回承诺。您是否尝试过从
async(params)
中删除
async
?能否提供与存储对象相关的代码?这可能是一个设置问题,导致这个问题是的,我刚刚尝试了,它的工作!