Pisanie metod bezpośrednio w komponentach zwiększa linie kodu i utrudnia czytanie. O ile wierzę, author
sugeruje, aby oddzielić metody API
na Service
.
Weźmy przykład, w którym musisz pobrać top posts
i operować na danych. Jeśli robisz to w komponencie, nie można go ponownie użyć, musisz powielić go w innych komponentach, gdziekolwiek chcesz go użyć.
export default {
data:() => ({
top: [],
errors: []
}),
// Fetches posts when the component is created.
created() {
axios.get(`http://jsonplaceholder.typicode.com/posts/top`)
.then(response => {
// flattening the response
this.top = response.data.map(item => {
title: item.title,
timestamp: item.timestamp,
author: item.author
})
})
.catch(e => {
this.errors.push(e)
})
}
}
Więc kiedy trzeba sprowadzić top post
w innym składniku trzeba powielać kod.
Teraz wstawmy API methods
w Service
.
api.js file
const fetchTopPosts = function() {
return axios.get(`http://jsonplaceholder.typicode.com/posts/top`)
.then(response => {
// flattening the response
this.top = response.data.map(item => {
title: item.title,
timestamp: item.timestamp,
author: item.author
})
}) // you can also make a chain.
}
export default {
fetchTopPosts: fetchTopPosts
}
więc użyć powyższego API methods
w dowolnych składników, które chcesz.
Po tym:
import API from 'path_to_api.js_file'
export default {
data:() => ({
top: [],
errors: []
}),
// Fetches posts when the component is created.
created() {
API.fetchTopPosts().then(top => {
this.top = top
})
.catch(e => {
this.errors.push(e)
})
}
}
Dzięki dużo!Teraz rozumiem. –
Ktoś napisał także interesujący artykuł na ten temat: https://vuejsdevelopers.com/2017/08/28/vue-js-ajax-recipes/ –