【发布时间】:2020-06-08 06:31:19
【问题描述】:
我在 redux 调度中遇到了奇怪的行为。对于调度函数 res 未定义,但是对于控制台日志,该函数调用 res 上方的一行已正确记录。任何想法为什么会发生这种情况?
主要动作
export const uploadFiles = (files: File[], artworkId: string, fileType: string) => (
(dispatch: Dispatch) => {
files.forEach(file => {
axios.post(
`${my-api-route}, convertToFormDataFile(file, fileType))
.then(res => {
console.log(res.data.data.id) //works
dispatch(uploadFileLimitedEditionSuccess(res.data.data.id, file, fileType))
}) //does not work
.catch(err => dispatch(uploadFileLimitedEditionFailure(err.response.data.errors[fileType === 'pdf' ? 'pdf' : 'file'], file.name, fileType)))
})
}
);
成功行动
const uploadFileLimitedEditionSuccess = (id: any, file: File, fileType: string):LimitedEditionActionType => ({
type: LIMITED_EDITIONS_UPLOAD_FILE_SUCCESS,
payload: {
id,
file,
fileType
}
});
【问题讨论】:
-
你确定
res.data.data.id是正确的吗?可以显示res的内容吗? -
你已经标记了这个javascript,但它看起来更像typescript
-
是的,抱歉,我刚刚更正了 console.log 中的消息。这个打印正确。我知道这是 Typescript,但错误不是来自打字,因此我认为 js 标签会更好。
-
只需 console.log(res) 并确保您正确访问道具甚至更好,销毁它们。
-
是的,响应具有所有属性。案例是调度以某种方式丢失 res 对象。更重要的是,在调试器中我发现它应该可以访问该对象。
标签: reactjs typescript react-redux axios redux-thunk