Я пытаюсь создать компонент, для работы которого требуется массив объектов. Я передаю его от родителя ребенку, используя реквизит.
Я получаю данные из API с помощью axios.
Поскольку объекты в массиве могут не содержать требуемый ключ "is_selected", я добавляю его к каждому объекту в массиве. Но проблема в том, что массив иногда пуст.
Я перепробовал все, что мог найти. Единственный способ, которым это работает, это со статическими данными.
Я также создал песочницу , и в консоли вы можете видеть, что «КОМПОНЕНТНЫЕ ДАННЫЕ» по какой-то причине являются пустым массивом, но если вы назначаете статические объекты массиву, он работает безупречно
Так вот, что я делаю в своем ребенке:
<template>
<ul>
<li v-for="item in items">{{item.title}}</li>
</ul>
</template>
<script>
export default {
props: {
items: {
type: Array,
default: []
}
},
data() {
return {
local_items: this.items
};
},
methods: {},
created() {
var result = this.local_items.map(function(el) {
var o = Object.assign({}, el);
o.is_selected = false;
return o;
});
this.local_items = result
console.log('COMPONENT DATA: ', this.local_items);
}
};
</script>
И это родитель:
<template>
<test :items="items"></test>
</template>
<script>
import Test from "./Test";
import axios from 'axios'
export default {
data() {
return {
items: []
};
},
methods: {},
async created () {
try {
axios.get('https://jsonplaceholder.typicode.com/posts')
.then(response => {
this.items = response.data
})
}catch (e){
console.log('ERROR: ', e)
}
},
components: {
Test
}
};
</script>
Что я делаю не так? Кто-нибудь может привести меня к правильному пути?
Редактировать: Если вы ищете это, рабочий пример находится в песочнице