У меня проблема с машинописным текстом в Vue 3.
- Получайте данные из Itunes каждый раз, когда опора 'query' изменяется. (формат: [{}, {}, {}, ...]
- Вызов функции для фильтрации неиспользуемой информации из выборки
Когда я вызываю функцию (эта функция будет фильтровать объекты для упрощения кода) в выборке, она выдает ошибку:
Property 'filterData' does not exist on type 'void'.
Мой код:
<template>
<div>
</div>
</template>
<script lang="ts">
import { defineComponent, onUpdated } from 'vue';
interface Song {
id: number;
name: string;
nameT: string;
cover?: string;
preview: string;
}
interface SongFromITunes {
artistId: number;
artistName: string;
trackName: string;
previewUrl: string;
artworkUrl100?: string;
}
export default defineComponent({
data() {
return {
list: [] as Array<Song>
};
},
props: {
query: String
},
methods: {
filterData({
artistId: id,
artistName: name,
trackName: nameT,
artworkUrl100: cover,
previewUrl: preview
}: SongFromITunes): Song {
return { id, name, nameT, cover, preview };
}
},
setup(props) {
onUpdated(() => {
const { query } = props;
if (query != null) {
fetch(
`https://itunes.apple.com/search?term=${encodeURI(
query
)}&limit=10&entity=musicTrack`
)
.then((resolve) => resolve.json())
.then((data) => data.results.map((item: SongFromITunes) => this.filterData(item));
}
});
}
});
</script>
<style scoped></style>