Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 嵌套对象的promise.then()中未定义响应_Reactjs_Typescript_React Redux_Axios_Redux Thunk - Fatal编程技术网

Reactjs 嵌套对象的promise.then()中未定义响应

Reactjs 嵌套对象的promise.then()中未定义响应,reactjs,typescript,react-redux,axios,redux-thunk,Reactjs,Typescript,React Redux,Axios,Redux Thunk,我在redux调度中遇到了奇怪的行为。对于调度函数res未定义,但是对于控制台日志,正确记录该函数调用res上方的一行。你知道为什么会这样吗 主要动作 export const uploadFiles = (files: File[], artworkId: string, fileType: string) => ( (dispatch: Dispatch) => { files.forEach(file => { axios.

我在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
    }
});
成功行动

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的内容吗?你已经标记了这个,但看起来更像是的,对不起,我刚刚更正了console.log中的消息。这个打印正确。我知道这是Typescript,但错误并不是来自打字,因此我认为js标记会更好。只需console.log(res)并确保您正确访问道具,甚至更好,销毁它们。是的,响应具有所有属性。情况是dispatch不知何故丢失了res对象。此外,在调试器中,我发现它应该具有对该对象的访问权限。您确定
res.data.data.id
正确吗?你能显示res的内容吗?你已经标记了这个,但看起来更像是的,对不起,我刚刚更正了console.log中的消息。这个打印正确。我知道这是Typescript,但错误并不是来自打字,因此我认为js标记会更好。只需console.log(res)并确保您正确访问道具,甚至更好,销毁它们。是的,响应具有所有属性。情况是dispatch不知何故丢失了res对象。更重要的是,在调试器中我发现它应该有访问该对象的权限。我以前尝试过这个,但它不起作用。另外,我在console.log中放入了变量(响应值),它的日志工作了,但分派没有问题。问题可能出在
uploadFileLimitedEditionSuccess
中,然后……据我所知,
uploadFileLimitedEditionSuccess
在其参数未完全求值之前不会被调用。分派将对象作为其参数:。uploadFileLimitedEditionSuccess的返回值是多少?谢谢你的提示。实际上,在将console.log放入catch块后,我发现有一个非对象传递给函数,该函数需要对象。经过进一步研究,我发现这是我的减速机中的Object.entries。我以前试过这个,但不起作用。另外,我在console.log中放入了变量(响应值),它的日志工作了,但分派没有问题。问题可能出在
uploadFileLimitedEditionSuccess
中,然后……据我所知,
uploadFileLimitedEditionSuccess
在其参数未完全求值之前不会被调用。分派将对象作为其参数:。uploadFileLimitedEditionSuccess的返回值是多少?谢谢你的提示。实际上,在将console.log放入catch块后,我发现有一个非对象传递给函数,该函数需要对象。经过进一步研究,我发现这是我的减速机中的Object.entries。