简体   繁体   English

我有Vue错误呈现组件

[英]I got Vue errors rendering component

I have a "vue-cli webpack" like the following : 我有一个像下面的“ vue-cli webpack”:

src/components/Signin.vue: SRC /组件/ Signin.vue:

    <template>
...
                  <form v-on:submit.prevent="userSignIn">
                    ...
                    <div class="field">
                      <p class="control has-icons-left has-icons-right">
                        <input
                          v-validate="'required|email'"
                          v-bind:class="{'is-danger': errors.has('name')}"
                          name="email"
                          v-model="form.email"
                          class="input"
                          id="email"
                          type="email"
                          placeholder="Email"
                        >
                        <span class="icon is-small is-left">
                          <i class="fa fa-envelope"></i>
                        </span>
                        <span class="icon is-small is-right">
                          <i class="fa fa-check"></i>
                        </span>
                        <span class="help is-danger" v-show="errors.has('email')">{{ errors.first('email') }}</span>
                      </p>
                    </div>
                    <div class="field">
                      <p class="control has-icons-left">
                        <input
                          v-validate="'required|min:5'"
                          v-bind:class="{'is-danger': errors.has('name')}"
                          name="password"
                          v-model="form.password"
                          class="input"
                          id="password"
                          type="password"
                          placeholder="Password"
                        >
                        <span class="icon is-small is-left">
                          <i class="fa fa-lock"></i>
                        </span>
                        <span class="help is-danger" v-show="errors.has('password')">{{ errors.first('password') }}</span>
                      </p>
                    </div>
                    <div class="field is-grouped">
                      <div class="control">
                        <button v-bind:disabled="errors.any()" class="button is-primary" type="submit" :disabled="loading">
                                        Submit
                                    </button>
                      </div>
                    </div>
                  </form>
...
    </template>

<script>
...
  export default {
    data () {
      return {
        form: {
          email: '',
          password: '',
          alert: false
        }
      }
    },
    computed: {
      error () {
        return this.$store.getters.getError
      },
      loading () {
        return this.$store.getters.getLoading
      }
    },
    watch: {
      error (value) {
        if (value) {
          this.alert = true
        }
      },
      alert (value) {
        if (!value) {
          this.$store.dispatch('setError', false)
        }
      },
      methods: {
        userSignIn () {
          this.$store.dispatch('userSignIn', {email: this.email, password: this.password})
        }
      }
    },
...
  }
</script>

src/App.vue: SRC / App.vue:

<template>
  <main>
    <router-view></router-view>
  </main>
</template>

<style lang="sass">
  @import "~bulma"
  /* Your css for this file... */
</style>

src/main.js SRC / main.js

import Vue from 'vue'
import App from './App'
import router from './router'
import firebase from 'firebase'
import { store } from './store'
import VeeValidate from 'vee-validate'
import { firebaseConfig } from './config'

Vue.use(VeeValidate)
Vue.config.productionTip = false
firebase.initializeApp(firebaseConfig)

/* eslint-disable no-new */
const unsubscribe = firebase.auth()
.onAuthStateChanged((firebaseUser) => {
  new Vue({
    el: '#app',
    router,
    store,
    render: h => h(App),
    created () {
      store.dispatch('autoSignIn', firebaseUser)
    }
  })
  unsubscribe()
})

and I get two errors when I click the button : 单击按钮时出现两个错误:

Property or method "userSignIn" is not defined on the instance but referenced during render. 属性或方法“ userSignIn”未在实例上定义,但在渲染期间被引用。 Make sure to declare reactive data properties in the data option. 确保在data选项中声明反应性数据属性。

Signin.vue?d58e:24 Uncaught TypeError: _vm.userSignIn is not a function Signin.vue?d58e:24未捕获的TypeError:_vm.userSignIn不是函数

You've defined your methods inside your watch. 您已经在手表内部定义了方法。 Move them outside. 将它们移到外面。

watch: {
  error (value) {
    if (value) {
      this.alert = true
    }
  },
  alert (value) {
    if (!value) {
      this.$store.dispatch('setError', false)
    }
  },
},
methods: {
    userSignIn () {
      this.$store.dispatch('userSignIn', {email: this.email, password: this.password})
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM