Vue | async data()
-
התחלתי אתמול ללמוד vue, והסתבכתי עכשיו.
אני מנסה לקבל מידע מ-API דרך פונקציית data, ולא מצליח.
אני לוקח את המידע עם fetch, ומקבל Promise.
אם אני עושה ככה:const data = fetch(config.apiEndpoint + 'book/' + this.$route.params.name).then(res => res.json()) return { book: data.book }
data הוא undefined, כי המידע עוד לא התקבל.
אם אני עושה את זה עם async / await, הפונקציה מחזירה Promise, וvue צריך שהפונקציה תחזיר object..
מה עושים? -
@men770 לא מסכים עם השאלה, עם await צריך לעבוד מעולה ככה:
const data = await fetch(config.apiEndpoint + 'book/' + this.$route.params.name).then(res => res.json()) return { book: data.book }
או:
var root = { book: data.book } fetch(config.apiEndpoint + 'book/' + this.$route.params.name) .then(res => res.json()) .then(x => root.book = x.book); return root;
-
@dovid אמר בVue | async data():
@men770 לא מסכים עם השאלה, עם await צריך לעבוד מעולה ככה:
const data = await fetch(config.apiEndpoint + 'book/' + this.$route.params.name).then(res => res.json()) return { book: data.book }
כתבתי שזה לא עובד, כי בדקתי וזה לא עבד..
כשאני עושה את הפונקציה של data בתור async, vue מחזיר שגיאה, כי הפונקציה data צריכה להחזיר object, והיא מחזירה Promise. -
תגדיר בdata משתנה עם ערך ריק
ואחרי זה תכניס את הפונקציה לתוך mounted
לדוגמא:mounted() { fetch(config.apiEndpoint + 'book/' + this.$route.params.name).then(res => res.json()) }
ואחרי זה אתה מוסיף שורה שמכניסה את ה Json לתוך המשתנה שהגדרת
מקווה שהסברתי מספיק טוב!
-
@katz אמר בVue | async data():
תגדיר בdata משתנה עם ערך ריק
ואחרי זה תכניס את הפונקציה לתוך mounted
לדוגמא:mounted() { fetch(config.apiEndpoint + 'book/' + this.$route.params.name).then(res => res.json()) }
ואחרי זה אתה מוסיף שורה שמכניסה את ה Json לתוך המשתנה שהגדרת
מקווה שהסברתי מספיק טוב!
אחרי זה ראיתי שכבר הסתדרת עם הרעיון הזה, סליחה על התגובה המאוחרת