Javascript 动作必须是普通对象。为异步操作使用自定义中间件-反应本机Redux
一些背景知识:当我使用simple.then()链接获取和发送响应时,我能够让所有的东西都正常工作。我现在遇到的错误是,当我试图使我的操作异步,并在承诺上使用wait时 注意:我使用的是redux thunk actions.js: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
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
?能否提供与存储对象相关的代码?这可能是一个设置问题,导致这个问题是的,我刚刚尝试了,它的工作!