javascript - Vuex 调度不返回

标签 javascript vue.js es6-promise vuex

我有这个代码:

signin(context, payload, resolve) {
    console.log("SIGNIN action")

    const aemail = payload.locmail
    const apassw = payload.locpass

    backend.get("api/auth/signin", {
      headers: {
        'planck': 'FRESH'
      },
      crossDomain: true,
      params: {
        password: apassw,
        email: aemail
      }
    }).then(function(ret) {
      console.log("SENT")
      if (ret.data.auth === 'TRUE') {
        context.commit('authenticate', ret.data.planck)
        state.isAuthenticated = true
      } else {
        state.isAuthenticated = false
      }
      console.log(ret)
      return Promise.resolve(ret)
    });
  }

当我从组件调用它时:

this.$store.dispatch('signin', {
        locmail,
        locpass
      }).then(ret => {
        console.log(ret);
      });

然后控制台日志打印undefined。我在这里做错了什么?在文档中,我读到我应该使用 resolve() 但随后我收到错误,它不是一个函数。

最佳答案

signin操作中返回backend promise 。

  signin(context, payload) {
    // ...

    // The action needs to return a Promise
    return backend.get("api/auth/signin", {
      /* ...*/
    }).then(function(ret) {
      /* ... */
    });
  }

此外,您似乎正在更改操作中的 state 对象,并且这应该仅限于突变。

如果您使用 strict mode在开发过程中,您会看到有关此的警告。

关于javascript - Vuex 调度不返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49710481/

相关文章:

javascript - 在类 deceleration 之外声明的方法无法被 javascript 中的子类继承

javascript - 在页面滚动时更改 "selected"

javascript - Vue - 使全局函数的输出成为响应式(Reactive)

javascript - 将 forEach() 与 promise 一起使用,同时在 .then() 链中访问先前的 promise 结果?

javascript - ReactJS 项目中 webpack 导入的行为是什么?

vue.js - 如何在 vue.js 中上传之前预览多个文件

javascript - 从套接字接收消息时 Vue.js 数据不更新

javascript - 修改 NodeJS 中的 Promise 原型(prototype)

javascript - 从 Promise 返回数据并在另一个方法中获取它

javascript - 哪种 js 编码实践更好?