如何获取this.$store.dispatch的返回值

 更新时间:2023年01月10日 10:54:55   作者:三分恶  
这篇文章主要介绍了如何获取this.$store.dispatch的返回值问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

获取this.$store.dispatch的返回值

this.$store.dispatch() 是用来传值给vuex的mutation改变state。

我们来看看怎么获取this.$store.dispatch() 调用的返回值。

Action

首先看看定义的Action:

  login({ commit }, userInfo) {
    // const { username, password } = userInfo
    return new Promise((resolve, reject) => {
      login(userInfo).then(response => {
        const { data } = response
        commit('SET_TOKEN', data.token)
        setToken(data.token)
        resolve(response)
      }).catch(error => {
        reject(error)
      })
    })
  },

两个关键点:

  • 返回一个new Promise
return new Promise((resolve, reject)
  • resolve函数中传入返回值
resolve(response)

调用

            this.$store.dispatch('user/login', this.loginForm)
              .then(res => {
                console.log(res)
                fullLoading.close();
                //登陆首页还是之前访问需要重定向的地址
                this.$router.push({
                  path: this.redirect || '/'
                })
                this.loading = false

              })
              .catch(error => {}

在调用里就可以直接通过 res 来直接获取返回值了。

              .then(res => {
                console.log(res)

根据vuex的this.$store.dispatch()返回值处理逻辑

App.vue

        const ret = await this.$store.dispatch('userLogin', {
          username: this.curUserName,
          password: this.curPassword
        })
        if (ret && ret.info) {
          this.$message.success(ret.info)
          await this.$store.dispatch('controlLoginDialog', false)
        } else {
          this.$message.warning(ret)
        }

vuex/store/action.js

  async userLogin ({commit}, account) {
    let userInfo = {}
    return new Promise((resolve, reject) => {
      requestUserLogin(account).then(response => {
        if (response.status === 200) {
          if (response.data.data) {
            userInfo = response.data.data
            userInfo.userName = userInfo.name
            userInfo.isLogin = true
            resolve({
              info: userInfo.userName + ' 登录成功,欢迎进入百度云智学院实验平台'
            })
          } else if (response.data.fail) {
            userInfo.userName = ''
            userInfo.isLogin = false
            myConsole('response.data.fail')
            resolve(response.data.fail)
          }
        } else {
          userInfo.userName = ''
          userInfo.isLogin = false
        }

        commit(USER_LOGIN, {userInfo})
      }).catch(err => {
        myConsole(err)
        reject(err)
      })
    })
  },

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • vue.js使用v-pre与v-html输出HTML操作示例

    vue.js使用v-pre与v-html输出HTML操作示例

    这篇文章主要介绍了vue.js使用v-pre与v-html输出HTML操作,结合实例形式分析了vue.js基于v-pre与v-html属性输出HTML的具体操作技巧,需要的朋友可以参考下
    2018-07-07
  • vue 解决在微信内置浏览器中调用支付宝支付的情况

    vue 解决在微信内置浏览器中调用支付宝支付的情况

    这篇文章主要介绍了vue 解决在微信内置浏览器中调用支付宝支付的情况,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • vue如何通过params和query传值(刷新不丢失)

    vue如何通过params和query传值(刷新不丢失)

    这篇文章主要介绍了vue如何通过params和query传值(刷新不丢失),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04
  • 浅析Vue2/Vue3中响应式的原理

    浅析Vue2/Vue3中响应式的原理

    这篇文章主要是来和大家一起讨论一下Vue2与Vue3中响应式的原理,文中的相关示例代码简洁易懂,对我们深入了解Vue有一定的帮助,需要的可以参考下
    2023-07-07
  • Vue3中集成高德地图并实现平移缩放功能

    Vue3中集成高德地图并实现平移缩放功能

    随着前端技术的不断发展,地图应用在我们的项目中越来越常见,本文将介绍如何在Vue3项目中集成高德地图,并通过简单的配置实现地图的平移和缩放功能,需要的朋友可以参考下
    2024-09-09
  • vue+iview/elementUi实现城市多选

    vue+iview/elementUi实现城市多选

    这篇文章主要介绍了vue+iview/elementUi实现城市多选,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • vue全局自定义指令-元素拖拽的实现代码

    vue全局自定义指令-元素拖拽的实现代码

    这篇文章主要介绍了面板拖拽之vue自定义指令,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-04-04
  • el-form中的rules未生效的解决方法

    el-form中的rules未生效的解决方法

    本文主要介绍了el-form中的rules未生效的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • vue3响应式实现readonly从零开始教程

    vue3响应式实现readonly从零开始教程

    这篇文章主要为大家介绍了vue3响应式实现readonly从零开始教程示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • Vue 兄弟组件通信的方法(不使用Vuex)

    Vue 兄弟组件通信的方法(不使用Vuex)

    本篇文章主要介绍了Vue 兄弟组件通信的方法(不使用Vuex),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10

最新评论