我用
firebase
用于用户身份验证。我有一个用户可以登录的表单。有一个
select
输入不同
options
是的。用户选择一个
option
类型正确
password
然后登录。我需要找到在
选择
输入,这样我就可以在
onSignIn()
方法-待精密化:
this.$store.dispatch('signUserIn', { //CURRENT email: this.chosenUser.email, password: this.password})
是的。
但当我点击
Log in
在我的实际生活中
火力基地
连接的项目出现错误:
signInWithEmailAndPassword failed: First argument "email" must be a valid string.
我认为
this.chosenUser.email
是一根绳子。我该怎么修?
来了一个
demo
是的。
登录组件:
<template>
<section class="signin">
<div class="login">
<h1>Log in</h1>
<form>
<select v-model="chosenUser">
<option v-for="user in users">{{ user.login }}</option>
</select>
<input type="password" v-model="password" id="password" placeholder="Password">
<input type="button" @click="onSignIn" value="Login">
</form>
</div>
</section>
</template>
<script>
import { mapGetters } from "vuex";
export default {
data() {
return {
chosenUser: "",
password: ""
};
},
methods: {
onSignIn() {
this.$store.dispatch("signUserIn", {
email: this.user.email,
password: this.password
});
}
},
computed: {
...mapGetters(["users", "user"])
}
};
</script>
商店.js:
state: {
users: [
{ login: "London", email: "london@gmail.com" },
{ login: "Paris", email: "paris@gmail.com" }
],
user: null
},
actions: {
signUserIn({ commit }, payload) {
firebase
.auth()
.signInWithEmailAndPassword(payload.email, payload.password)
.then(user => {
const newUser = {
id: user.uid,
cart: []
};
commit("setUser", newUser);
})
.catch(error => {
console.log(error);
});
}
},
mutations: {
setUser(state, payload) {
state.user = payload;
}
},
getters: {
users: state => {
return state.users;
},
user: state => {
return state.user;
}
}