Vue js передать значение в компонент
Добрый вечер. Подскажите пожалуйста, как передать значение функции в компонент, которое оно возвращает.
Пробую так, возвращает одно true
<template>
<div id="app">
<Header
:questionScore="this.score"
:questionNumber="this.question_number"
/>
<Table
:questionArr="getCorrectQuiz"
:questionText="getCorrectName"
v-on:get-unswer="getUnswer($event)"
v-on:post-query="postQuery()"
/>
</div>
</template>
export default {
name: 'app',
components: {
Header,
Table
},
props: {
tempered: {},
i: {}
},
data() {
return {
score: 0,
question_number: 1,
dataQuiz: [
{name: 'Как называется самое большое животное ?', id: 1,
data: [
{id: 1, text: 'Животное 1', chosen: false, correct: true},
{id: 2, text: 'Животное 2', chosen: false},
{id: 3, text: 'Животное 3', chosen: false}
]}
]
}
},
computed: {
getCorrectName() {
this.dataQuiz.forEach((i) => {
if (i.id === this.question_number) {
return i.name
}
})
return true
},
getCorrectQuiz() {
this.dataQuiz.forEach((i) => {
if (i.id === this.question_number) {
return i.data
}
})
return true
},
},
methods: {
getUnswer(id) {
this.dataQuiz.forEach((item) => {
if (item.id == id && item.chosen === false) item.chosen = true
else item.chosen = false
//Решение, если надо выбрать несколько ответов
// else if (item.id == id && item.chosen === true) item.chosen = false
})
},
postQuery() {
this.dataQuiz.forEach((item) => {
if (typeof item.correct !== "undefined" && item.chosen === true) {
this.score++
this.question_number++
}
})
}
}
}
Проблема с функцией getCorrectQuiz через console.log(данные показываются), делаю return i.data не фурычит, возвращает true. я бы убрал return true, но тогда ругается eslint |
К vue js никакого отношения вопрос не имеет. Вы не понимаете что такое forEach и что такое стрелочные функции.
Стрелочные функции - всё равно функции. return же внутри функции влияет только на эту самую функцию и никак ни на что вокруг и снаружи. forEach - выполняет переданную функцию для каждого элемента массива, и никак не учитывает возврат из этой функции. Если вы привыкли использовать возврат из циклов - используйте циклы, а не методы массива принимающие функции:
❌ arr.forEach((foo) => {
return bar
})
✅ for(let foo of arr) {
return bar
}
|
| Часовой пояс GMT +3, время: 07:57. |