diff --git a/pages/ninjas/[id].js b/pages/ninjas/[id].js new file mode 100644 index 00000000..b86a5224 --- /dev/null +++ b/pages/ninjas/[id].js @@ -0,0 +1,34 @@ +export const getStaticPaths = async () => { + const res = await fetch('https://jsonplaceholder.typicode.com/users') + const data = await res.json() + const paths = data.map(ninja => { + return { + params: { id: ninja.id.toString() } + } + }) + return { + paths, + fallback: false + } +} +export const getStaticProps = async context => { + const id = context.params.id + const res = await fetch('https://jsonplaceholder.typicode.com/users/' + id) + const data = await res.json() + return { + props: { ninja: data } + } +} +const Detail = ({ ninja }) => { + return ( +
+

{ninja.name}

+

{ninja.email}

+

{ninja.website}

+ +

{ninja.address.city}

+
+ ) +} + +export default Detail diff --git a/pages/ninjas/index.js b/pages/ninjas/index.js index 6dd11aaa..847b3ebb 100644 --- a/pages/ninjas/index.js +++ b/pages/ninjas/index.js @@ -1,9 +1,25 @@ -const Ninjas = () => { +import styles from '../../styles/Ninjas.module.css' +import Link from 'next/link' +export const getStaticProps = async () => { + const res = await fetch('https://jsonplaceholder.typicode.com/users') + const data = await res.json() + + return { + props: { ninjas: data } + } +} +const Ninjas = ({ ninjas }) => { return (
-

All Ninjas

+

+ {ninjas.map(ninja => ( + + +

{ninja.name}

+
+ + ))}
- ); + ) } - -export default Ninjas; \ No newline at end of file +export default Ninjas diff --git a/styles/Ninjas.module.css b/styles/Ninjas.module.css new file mode 100644 index 00000000..31f014c9 --- /dev/null +++ b/styles/Ninjas.module.css @@ -0,0 +1,10 @@ +.single { + padding: 2px 16px; + background: #fff; + display: block; + margin: 20px 10px; + border-left: 8px solid #fff; +} +.single:hover { + border-left: 8px solid #4979ff; +}