函数调用中未定义的参数
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)
时 uid
在 actionCreateUserDocument()
函数中未定义。
为什么会这样?
那是因为你传递了多个参数。
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
})
在我的 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)
时 uid
在 actionCreateUserDocument()
函数中未定义。
为什么会这样?
那是因为你传递了多个参数。
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
})