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

vuex如何通过dispatch操作ajax提交表单数据,然后拿到返回的状态

vuex如何通过dispatch操作ajax提交表单数据,然后拿到返回的状态

MYYA 2019-02-25 17:19:46
最近做了一个项目,在提交表单的时候,把ajax方法写在了vuex的actions中,但是,当我执行如下代码之后,发现弹出来的还是原来的值,如果设置一个定时器如1s之后再弹出,就可以了,请问有什么好的办法解决吗,我想拿到提交后的状态,但是,dispatch是异步的,无法及时拿到this.$store.dispatch('sendServerLoanCustomFilledDatas', this.filledData)    .then(() => {      alert(this.filledData.status)    })
查看完整描述

1 回答

?
www说

TA贡献1775条经验 获得超8个赞

其实有两种方式可以实现:


方法一:async/await


// actions.js

async sendServerLoanCustomFilledDatas({commit}) {

    awiat fetch(`/api/xxx`);

}


// template

async submit() {

    await this.$store.dispatch('sendServerLoanCustomFilledDatas', this.filledData);

    console.log(this.filledData.status);

}

方法二:组合Action


核心就是在你的action中返回一个promise

// actions.js

sendServerLoanCustomFilledDatas({commit}) {

    return new Promise((resolve, reject) => {

        fetch(`/api/xxx`)

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

        .then(resData => {

            commit('xxxCommit', resData);

            resolve();  

        })

        .catch(reject);

    });

}


// template

this.$store.dispatch('sendServerLoanCustomFilledDatas', this.filledData)

.then(() => {});


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

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信