为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

SMILET 2022-06-09 11:15:45
我正在使用反应+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([]);    }}
查看完整描述

1 回答

?
Cats萌萌

TA贡献1805条经验 获得超9个赞

您应该返回 aPromise为这样的操作创建异步流:


export const createItem = data => dispatch => new Promise((resolve, reject) => {


  // do something was a success

  resolve();


  // do something was a fail

  reject();


});


查看完整回答
反对 回复 2022-06-09
  • 1 回答
  • 0 关注
  • 160 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号