函数调用中未定义的参数

Parameter undefined in function call

在我的 Vuex 商店中,我正在调用操作部分中的一些函数。

代码如下所示:

 actionSignUp({ commit, dispatch }, form) {
  commit("setStatus", "loading")
  auth.createUserWithEmailAndPassword(form.email, form.password)
    .then((response) => {
      console.log(response.user.uid)
      console.log("Successfull registered")
      dispatch("actionCreateUserDocument", form, response.user.uid)
    })
    .catch((error) => {
      commit("setStatus", "failure")
      commit("setError", error.message)
    })
},

actionCreateUserDocument({ dispatch }, form, uid) {
  console.log(uid)
  usersCollection.doc(uid).set({
    email: form.email,
    name: form.name,
    courses: []
  })
    .then(() => {
      console.log("Document successfully written!");
      dispatch("actionFetchUserProfile", uid)
    })
    .catch((error) => {
      console.error("Error writing document: ", error);
    });
},

actionSignUp 函数中我调用了 console.log(response.user.uid。在这里,我得到了正确的价值。但是当我调用 dispatch("actionCreateUserDocument", form, response.user.uid)uidactionCreateUserDocument() 函数中未定义。

为什么会这样?

那是因为你传递了多个参数。

Vuex 商店允许以下内容:

dispatch(type: string, payload?: any, options?: Object): Promise<any>
dispatch(action: Object, options?: Object): Promise<any>

因此,Vuex Store 将您的参数 response.user.uid 视为选项。

您必须将其重构为:

dispatch("actionCreateUserDocument", {
  form,
  userId: response.user.uid
})