こんにちは、
vue-cli にいくつか問題があります。入力(子コンポーネント)に入力されたテキストを(メインコンポーネントに)表示しようとしました。それはうまくいきます(とても奇妙です)が、エラーメッセージがあります:
vue.esm.js?efeb:578 [Vue warn]: Property or method "test" is not
defined on the instance but referenced during render. Make sure that
this property is reactive, either in the data option, or for class-
based components, by initializing the property. See:
https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-
Properties.
found in
---> <Signup> at src/components/auth/Signup.vue
<App> at src/App.vue
<Root>
インターネットで検索すると、このエラーを解決するための多くの例がありますが、アーキテクチャ vue-cli では解決されません。わかりません...
ステップバイステップ:
私はコンポーネントを書きます:
<template>
<div class="container">
<p>{{ data.test }}</p>
<form @submit.prevent="signup">
<v-customInput v-model="test" @onChangeValue="onChange"></v-customInput>
</form>
</div>
</template>
<script>
import CustomInput from '../shared/CustomInput'
export default {
name: 'HelloWorld',
components: {
'v-customInput': CustomInput,
},
data() {
return {
data: {
test: '',
first_name: '',
last_name: '',
email: '',
password: '',
vat: 0,
creation_company_date: new Date(),
phone: '',
},
error: false,
};
},
methods: {
onChange(variable) {
const data = this.data;
for (let value in data) {
if (value === 'test') {
data[value] = variable;
}
}
}
},
};
</script>
および子 Components :
<template>
<div class="customInput">
<input v-model="value" type="text">
<label>First Name</label>
<script>
export default {
name: 'CustomInput',
data() {
return {
value: '',
};
},
watch: {
value: function(val, oldVal) {
this.$emit('onChangeValue', this.value);
}
},
};
</script>