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 (
- );
+ )
}
-
-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;
+}