@faynster

Как правильно добавлять компоненты на vue3?

У меня есть компонент "blockTest.vue" где находится кнопка "+" при клике на нее должен добавляться компонент answer. Сделал но работает.

blockTest.vue
<template>
    <div class="block__test">
        <div class="test__true">
            <div class="true__inner">
                <span>Првильный ответ</span>
                <button @click="addAnswer">+</button>
            </div>

            <answer
                v-for="answer in answers"
                :answer="answer"
                :key="answer.id"
            />
        </div>
        <div class="test__false">
            <div class="false__inner">
                <span>Не првильный ответ</span>
                <button>+</button>
            </div>
            <answer/>
        </div>
    </div>
</template>

<script>
export default {
    name: 'blockTest',
    
    props: {
        answers: {
            type: Array,
            required: true,
        }
    },
    data(){
        return {
            answers: [
             
           ]
        }
    },
    methods: {
        addAnswer(answer){
            this.answer.id = Date.now();
            this.answers.push(answer);
        }
    }
}
</script>


answer.vue
<template>
    <form class="text__inner">
        <input
            v-model="text"
            v-if="isElVisible"
            @change="showTextarea"
            class="input"
        />


        <p
            @click="showTextarea"
            v-else
        >
            {{header}}
            {{text}}

        </p>
    </form>
</template>

<script>
export default {
    name: 'answer',
    data(){
        return {
            text:'',
            header: 'Введите ответ',
            isElVisible: false,
        }
    },
    methods:{
        showTextarea(){
            this.isElVisible = !this.isElVisible;
            this.header = '';
        }
    }
}
</script>

Только не давно начал осваивать вью, не ругайте сильно пожалуйста если полный бред..
  • Вопрос задан
  • 117 просмотров
Пригласить эксперта
Ответы на вопрос 1
wapster92
@wapster92
1) Компоненты нужно называть как минимум двумя словами.
2)
addAnswer(answer){
            this.answer.id = Date.now();
            this.answers.push(answer);
        }
this.answers у тебя props нельзя модифицировать props нужно, одавать данные на ружу, чтобы родитель их обработал и вернул новое значение в props.
3) this.answer.id откуда у тебя взялась вообще это свойство answer, в коде его нет.
4)
props: {
        answers: {
            type: Array,
            required: true,
        }
    },
    data(){
        return {
            answers: [
             
           ]
        }
    },
пропа и свойство в data не могут иметь одинаковые имена
5)
<answer
                v-for="answer in answers"
                :answer="answer"
                :key="answer.id"
            />

Откуда взялась пропа answer если в компоненте ее нет.

Обо всех этих ошибках тебе еще в логе vue должен был сообщить.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы