Vue.js 如何在Vue和Vuex中正确绑定表单-v-model的差异,:value&:value.sync

Vue.js 如何在Vue和Vuex中正确绑定表单-v-model的差异,:value&:value.sync,vue.js,vuex,nuxt.js,Vue.js,Vuex,Nuxt.js,我是Vue&Vuex的新手,不确定如何正确设置表单 <template> <div> <div v-if="error">{{error.message}}</div> <form @submit.prevent> <h1>Register</h1> <input type="email" name="" id="" :

我是Vue&Vuex的新手,不确定如何正确设置表单

<template>
    <div>
        <div v-if="error">{{error.message}}</div>
        <form @submit.prevent>
            <h1>Register</h1>
            <input type="email" name="" id="" :value.sync="email" placeholder="Email">
            <input type="password" :value.sync="password" placeholder="Password">
            <button @click="signup">Submit</button>
            <a href="login">Sign in</a>
        </form>
    </div>
</template>

<script>
import {fireAuth} from '~/plugins/firebase.js'
export default {
  data: () => ({
    email: '',
    password: '',
    error: ''
  }),
  methods: {
    signup() {
      fireAuth.createUserWithEmailAndPassword(this.email, this.password).then(res => {
        if (res) {
          this.$store.commit('setCurrentUser', res.user)
          this.$router.push('/')
        }
      }).catch(err => {
        this.error = err
        console.log(err)
      })
    }
  }
}
</script>
Vue.config.devtools=false Vue.config.productionTip=false const vm=新的Vue{ el:应用程序, 资料{ 返回{ 电邮:, 密码: } }, 方法:{ 报名{ console.logthis.email//电子邮件值 console.logthis.password//密码值 } } } 登记
我想我已经找到了解决办法,这就是我尝试使用firebase的方式。我使用了v-model,但我在AuthStateChanged上使用了firebase方法,只有调用了该方法,我才会更改存储。因此,在我的firebase.js中,我添加了

const fireAuth = firebase.auth()
const fireDb = firebase.database()
export { fireAuth, fireDb }

export default async ({ store }) => {
    await asyncOnAuthStateChanged(store)
}

function asyncOnAuthStateChanged (store) {
    return new Promise(resolve => {
        fireAuth.onAuthStateChanged(user => {
            resolve(user)
            store.commit('setCurrentUser', JSON.parse(JSON.stringify(user)))
        })
    })
}

你能把你的商店寄出去吗?v-model=email和v-model=password将其绑定到不会抛出错误的数据对象的组件状态。我猜当你把res.user传递给setCurrentUser时,你的麻烦就在这里。将代码发布到应用商店,我们可以从那里开始。谢谢,我刚刚为您更新了代码,只是为了确保,您是否正在尝试在应用商店的输入之间进行同步?不,我只需要使用输入的值,就可以发送到firebase,然后我将使用firebase提交到应用商店的内容。我认为我解释得很糟糕,这突出了我自己对这一点的理解不足,并且认为我可能把我试图实现的目标过于复杂化了?对不起,我不确定我是否理解这有什么帮助,我没有尝试存储表单中的值,因此我不需要将它们提交到存储。因此,由于数据只需要在这个页面上,我已经尝试只处理电子邮件和密码在这里。除非我对数据用途的理解是错误的?对不起,我不理解,更新后,v型工作正常
const fireAuth = firebase.auth()
const fireDb = firebase.database()
export { fireAuth, fireDb }

export default async ({ store }) => {
    await asyncOnAuthStateChanged(store)
}

function asyncOnAuthStateChanged (store) {
    return new Promise(resolve => {
        fireAuth.onAuthStateChanged(user => {
            resolve(user)
            store.commit('setCurrentUser', JSON.parse(JSON.stringify(user)))
        })
    })
}