【问题标题】:Vuejs Cannot destructure propertyVuejs无法解构属性
【发布时间】:2021-01-30 12:16:11
【问题描述】:

我有一个带有函数 signUp() 的 auth.js:

  async signUp(_, { username, password, firstName, lastName }) {
    const data = await Auth.signUp({
      username,
      password,
      attributes: {
        given_name: firstName,
        family_name: lastName,
      },
    });
    console.log(data);
  },
};

在 Registration.vue 方法中:,我正在尝试像这样传递用户名和密码:

   async submitReg() {
      AWSAuth.actions.signUp({
          username: this.form.email,
          password: this.form.password
        });

但是,我收到此错误:

Uncaught (in promise) TypeError: Cannot destructure property “未定义”的“用户名”,因为它未定义。 在 Object.signUp (auth.js?0a5a:103) 在 VueComponent.submitReg (VM20046 Register.vue:32)

为什么?我不明白为什么当“this.form.email”的值为“string”时用户名未定义。

【问题讨论】:

  • 现在是普通的 js,刚刚安装了 Vuex,一旦我解决了就打算使用它:)
  • 好的,然后删除 _ 作为第一个参数。就是这样!!
  • 可行,但 _ 在 Vuex 中将用于什么?
  • 其实就是actions中的context对象,里面有一些预定义的方法,比如commit and dispatch

标签: node.js vue.js ecmascript-6


【解决方案1】:

由于您要破坏未定义的第二个参数,请删除定义为第一个参数的_

async signUp({ username, password, firstName, lastName }) {

如果signUp 是一个动作,它应该通过调度方法调用:

this.$store.dispatch("signUp",{
          username: this.form.email,
          password: this.form.password
        })

那么第一个参数将是上下文回调,第二个是您的有效负载:

async signUp({commit}, { username, password, firstName, lastName }) {

...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-20
    • 1970-01-01
    • 2018-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多