Skip to content

Commit

Permalink
Update api-rest-example to SSG (#11362)
Browse files Browse the repository at this point in the history
* Update api-rest-example to SSG

* Use SWR for data fetching

* Updated pages

Co-authored-by: Luis Alvarez <luis@zeit.co>
  • Loading branch information
jazibjafri and Luis Alvarez committed Mar 28, 2020
1 parent 48650a7 commit 9e2ae69
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 35 deletions.
4 changes: 2 additions & 2 deletions examples/api-routes-rest/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@
"start": "next start"
},
"dependencies": {
"isomorphic-unfetch": "3.0.0",
"next": "latest",
"react": "^16.8.6",
"react-dom": "^16.8.6"
"react-dom": "^16.8.6",
"swr": "^0.1.18"
},
"license": "ISC"
}
8 changes: 1 addition & 7 deletions examples/api-routes-rest/pages/api/users.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,5 @@
// Fake users data
const users = [
{
id: 1,
},
{ id: 2 },
{ id: 3 },
]
const users = [{ id: 1 }, { id: 2 }, { id: 3 }]

export default (req, res) => {
// Get data from your database
Expand Down
36 changes: 18 additions & 18 deletions examples/api-routes-rest/pages/index.js
Original file line number Diff line number Diff line change
@@ -1,23 +1,23 @@
import fetch from 'isomorphic-unfetch'
import useSwr from 'swr'
import Link from 'next/link'

const Index = ({ users }) => (
<ul>
{users.map(user => (
<li key={user.id}>
<Link href="/user/[id]" as={`/user/${user.id}`}>
<a>{`User ${user.id}`}</a>
</Link>
</li>
))}
</ul>
)
const fetcher = url => fetch(url).then(res => res.json())

Index.getInitialProps = async () => {
const response = await fetch('http://localhost:3000/api/users')
const users = await response.json()
export default function Index() {
const { data, error } = useSwr('/api/users', fetcher)

return { users }
}
if (error) return <div>Failed to load users</div>
if (!data) return <div>Loading...</div>

export default Index
return (
<ul>
{data.map(user => (
<li key={user.id}>
<Link href="/user/[id]" as={`/user/${user.id}`}>
<a>{`User ${user.id}`}</a>
</Link>
</li>
))}
</ul>
)
}
18 changes: 10 additions & 8 deletions examples/api-routes-rest/pages/user/[id].js
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
import fetch from 'isomorphic-unfetch'
import { useRouter } from 'next/router'
import useSwr from 'swr'

const User = ({ user }) => <div>{user.name}</div>
const fetcher = url => fetch(url).then(res => res.json())

User.getInitialProps = async ({ query: { id } }, res) => {
const response = await fetch(`http://localhost:3000/api/user/${id}`)
const user = await response.json()
export default function User() {
const router = useRouter()
const { data, error } = useSwr(`/api/user/${router.query.id}`, fetcher)

return { user }
}
if (error) return <div>Failed to load user</div>
if (!data) return <div>Loading...</div>

export default User
return <div>{data.name}</div>
}

0 comments on commit 9e2ae69

Please sign in to comment.