Skip to content

Commit 02a4078

Browse files
committed
Render list of articles
1 parent 5f7111e commit 02a4078

File tree

2 files changed

+62
-0
lines changed

2 files changed

+62
-0
lines changed

src/App.vue

+54
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,46 @@
11
<template>
22
<div class="App o-container o-container--s o-vertical-spacing o-vertical-spacing--xl">
33
<h1>How to Use GraphQL with Vue Apollo Components and Netlify Functions</h1>
4+
<ApolloQuery
5+
:query="require('./queries/articles.gql')"
6+
>
7+
<template slot-scope="{ result: { loading, error, data } }">
8+
<div v-if="loading">
9+
Loading...
10+
</div>
11+
<div v-else-if="error">
12+
An error occured! Please try again.
13+
</div>
14+
<ul
15+
v-else-if="data"
16+
class="App__article-list"
17+
>
18+
<li
19+
v-for="article in data.articles"
20+
:key="article.id"
21+
class="App__article-list-item"
22+
>
23+
<div class="App__article-list-figure">
24+
<img
25+
:src="article.image"
26+
alt=""
27+
>
28+
</div>
29+
<div class="App__article-list-body">
30+
<h2>
31+
{{ article.title }}
32+
</h2>
33+
<p>
34+
{{ article.body }}
35+
</p>
36+
</div>
37+
</li>
38+
</ul>
39+
<div v-else>
40+
There are no articles yet. Please come back later.
41+
</div>
42+
</template>
43+
</ApolloQuery>
444
</div>
545
</template>
646

@@ -30,4 +70,18 @@ export default {
3070
text-align: center;
3171
}
3272
}
73+
74+
.App__article-list-item {
75+
display: flex;
76+
77+
&:not(:first-child) {
78+
margin-top: setting-spacing(l);
79+
padding-top: setting-spacing(l);
80+
border-top: 1px solid #e2e2e2;
81+
}
82+
}
83+
84+
.App__article-list-body {
85+
margin-left: setting-spacing(m);
86+
}
3387
</style>

src/queries/articles.gql

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
articles {
3+
body
4+
id
5+
image
6+
title
7+
}
8+
}

0 commit comments

Comments
 (0)