关于散布运算符返回“ undefined”存在一些问题,但是在我的情况下,我什么也没得到。
这是过程
[listof_objA, listof_objB]
.then(([listof_objA, listof_objB])=> { ...so on
dispatch(setListA(listof_objA))
someAsyncFunc().then(([listof_objA, listof_objB])=> {
dispatch(setListA(listof_objA))
dispatch(setListB(listof_objB))
})
console.log(action.payload)
正确显示了获得的listof_objA
case Types.SET_LISTA: {
console.log(action.payload)
return {
...state,
listof_objA: action.payload
}
}
case Types.SET_LISTA: {
console.log(action.payload)
return {
...state,
listof_objA: [...action.payload]
}
}
[]
。 action.payload
仍正确显示获得的listof_objA
。JSON.parse(JSON.stringify(action.payload))
,const newList = [...action.payload]
Array(0)
,但在下拉菜单中显示为Array(13) [{...},{...}, ... , {...}]
。就是这样。我找不到任何解决方案。我不知道为什么会这样。看来这只发生在我身上。请帮忙。如果您需要更多信息,请发表评论。我在一家公司工作,所以我不能提供所有信息。但我会尽力而为。谢谢。
答案 0 :(得分:1)
我猜您正在someAsyncFunc
中使用Promise,如果这样,则得到一个空数组的原因是因为您可能未正确解析Promise链。
正确的Promise链应如下所示:
async function someAsyncFunc() {
return await fetch('ENDPOINT')
.then(response => {
return response.ok
? response.json()
: Promise.reject(Error('Unsuccessful response'));
})
.then(([listof_objA, listof_objB]) => {
dispatch(setListA(listof_objA));
dispatch(setListB(listof_objB));
});
}
为了读取响应的正文,JSON。您需要调用response.json()方法。 json()方法读取响应的完整内容,并将文本解析为JSON。由于这是另一个异步操作,因此它本身会返回一个Promise。
希望有帮助
答案 1 :(得分:1)
@jank答案我希望可以解决您的问题,但是您可能希望看看redux-api-middleware是进行RPC调用的一种更为简单的方法,而没有所有的承诺。