React Redux Thunk 回调到另一个函数——TypeError:

我正在使用反应+redux。我有一个带有数据和图像的模态表单,成功后我需要关闭从 redux 返回的模态否则显示错误。在调度函数中,我还有 1 个回调函数来将图像存储到 S3。我正在从 redux-thunk 返回承诺,但我不断收到“TypeError:无法读取未定义的属性 'then'”。


零件


handleSubmit = e => {

        e.preventDefault();


        if(this.isFieldEmpty()){

            this.setState({ message: "All fields are mandatory with at least 1 pic" });

            return;

        } else {

            this.setState({ message: "" });

        }


        const data = {

            name: this.state.name,

            description : this.state.description,

            points : this.state.points,

            attributes : this.state.attributes,

            images : this.state.images,

            created_by: localStorage.getItem('id'),

        }

        this.props.createItem(data).then(() => {

            this.hideModal();

        })

    }


const mapDispatchToProps = dispatch => {

    return {

        createItem: data => {

            return dispatch(createItem(data))

        },

    };

};

行动


const saveItemImages = (images,successcb, failurecb) => {

    if(images.length > 0){

        const formData = new FormData();

        for(var x = 0; x<images.length; x++) {

            formData.append('image', images[x])

        }

        const token = localStorage.getItem('token');

        fetch(`${backendUrl}/upload/item-images/`, {

            method: "POST",

            headers: {

                'Authorization': `Bearer ${token}`

            },

            credentials: 'include',

            body: formData

        })

        .then(res => {

            if(res.status === 200){

                res.json().then(resData => {

                    successcb(resData.imagesUrl);

                });

            }else{

                res.json().then(resData => {

                    failurecb(resData.message);

                }) 

            }

        })

        .catch(err => {

            console.log(err);

        });

    } else {

        successcb([]);

    }

}



SMILET
浏览 161回答 1
1回答

Cats萌萌

您应该返回 aPromise为这样的操作创建异步流:export const createItem = data => dispatch => new Promise((resolve, reject) => {&nbsp; // do something was a success&nbsp; resolve();&nbsp; // do something was a fail&nbsp; reject();});
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript