mirror of
https://github.com/lainbo/component-party.git
synced 2026-04-05 13:09:03 +08:00
* ember polaris - fetch data example * PR feedback * renamed gjs * ember polaris - render app * readme - updated order and framework progress --------- Co-authored-by: driesdl <dries.delange@ocular.be>
49 lines
1.1 KiB
Plaintext
49 lines
1.1 KiB
Plaintext
import Component from "@glimmer/component";
|
|
import { tracked } from "@glimmer/tracking";
|
|
|
|
class State {
|
|
@tracked isLoading = false;
|
|
@tracked error = null;
|
|
@tracked data = null;
|
|
}
|
|
|
|
function fetchUsers() {
|
|
let state = new State();
|
|
|
|
async function fetchData() {
|
|
try {
|
|
let response = await fetch("https://randomuser.me/api/?results=3");
|
|
let { results: users } = await response.json();
|
|
state.data = users;
|
|
state.error = null;
|
|
} catch (err) {
|
|
state.data = null;
|
|
state.error = err;
|
|
}
|
|
state.isLoading = false;
|
|
}
|
|
|
|
fetchData();
|
|
return state;
|
|
}
|
|
|
|
export default class App extends Component {
|
|
<template>
|
|
{{#let (this.fetchUsers) as |request|}}
|
|
{{#if request.isLoading}}
|
|
<p>Fetching users...</p>
|
|
{{else if request.error}}
|
|
<p>An error occurred while fetching users</p>
|
|
{{else}}
|
|
<ul>
|
|
{{#each request.data as |user|}}
|
|
<li>
|
|
<img src={{user.picture.thumbnail}} alt="user" />
|
|
<p>{{user.name.first}} {{user.name.last}}</p>
|
|
</li>
|
|
{{/each}}
|
|
</ul>
|
|
{{/if}}
|
|
{{/let}}
|
|
</template>
|
|
} |