import type { BreadcrumbItem } from '../app/breadcrumb'; import type { AppMenuItem } from '../app/menu'; import { toNative } from 'vue-facing-decorator'; import { Component } from '../../app/vuetsx'; import { PowerduckViewModelBase } from '../../common/base-component'; interface WeatherForecast { dateFormatted: string; temperatureC: number; temperatureF: number; summary: string; } @Component class FetchDataComponentComponent extends PowerduckViewModelBase { protected breadcrumbItems: BreadcrumbItem[] = []; protected menuItems: AppMenuItem[] = []; forecasts: WeatherForecast[] = []; loading: boolean = true; async mounted() { await this.refreshData(); } async refreshData() { this.forecasts = await this.getDataAsync(); } async getDataAsync() { this.loading = true; const response = await fetch('/api/spapoc/SampleData/WeatherForecasts'); const data = response.json(); this.loading = false; return data; } render(h) { return (
This component demonstrates fetching data from the server.
| Date | Temp. (C) | Temp. (F) | Summary |
|---|---|---|---|
| {forecast.dateFormatted} | {forecast.temperatureC} | {forecast.temperatureF} | {forecast.summary} |
Loading...
); } } } const FetchDataComponent = toNative(FetchDataComponentComponent); export default FetchDataComponent;