Showing
7 changed files
with
59 additions
and
25 deletions
1 | -import React from "react"; | 1 | +import React, { useState, useEffect } from "react"; |
2 | + | ||
2 | import { makeStyles } from "@material-ui/core/styles"; | 3 | import { makeStyles } from "@material-ui/core/styles"; |
3 | import Container from "@material-ui/core/Container"; | 4 | import Container from "@material-ui/core/Container"; |
4 | import Grid from "@material-ui/core/Grid"; | 5 | import Grid from "@material-ui/core/Grid"; |
... | @@ -6,14 +7,6 @@ import Icon from "@material-ui/core/Icon"; | ... | @@ -6,14 +7,6 @@ import Icon from "@material-ui/core/Icon"; |
6 | 7 | ||
7 | import TodoCard from "./TodoCard.js"; | 8 | import TodoCard from "./TodoCard.js"; |
8 | 9 | ||
9 | -const data = { | ||
10 | - date: "2020-99-99", | ||
11 | - name: "daehwi", | ||
12 | - isPublic: true, | ||
13 | - title: "열글자까지가능합니다.", | ||
14 | - todo: ["응가하기", "똥싸기", "변누기"], | ||
15 | -}; | ||
16 | - | ||
17 | const useStyles = makeStyles((theme) => ({ | 10 | const useStyles = makeStyles((theme) => ({ |
18 | root: { | 11 | root: { |
19 | flexGrow: 1, | 12 | flexGrow: 1, |
... | @@ -27,19 +20,42 @@ const useStyles = makeStyles((theme) => ({ | ... | @@ -27,19 +20,42 @@ const useStyles = makeStyles((theme) => ({ |
27 | }, | 20 | }, |
28 | })); | 21 | })); |
29 | 22 | ||
30 | -export default function CenteredGrid() { | 23 | +const callApi = async () => { |
24 | + const response = await fetch("/api/cards"); | ||
25 | + const body = await response.json(); | ||
26 | + return body; | ||
27 | +}; | ||
28 | + | ||
29 | +export default function BodyLayout() { | ||
31 | const classes = useStyles(); | 30 | const classes = useStyles(); |
31 | + const [data, setData] = useState([]); | ||
32 | 32 | ||
33 | + useEffect(() => { | ||
34 | + callApi() | ||
35 | + .then((res) => setData(res)) | ||
36 | + .catch((err) => console.log(err)); | ||
37 | + }); | ||
38 | + | ||
39 | + if (!data) { | ||
40 | + return <p>ㄱㄷㄱㄷ</p>; | ||
41 | + } else { | ||
42 | + console.log(123); | ||
43 | + console.log(data); | ||
33 | return ( | 44 | return ( |
34 | <Container className={classes.root} maxwidth="sm"> | 45 | <Container className={classes.root} maxwidth="sm"> |
35 | <Grid className={classes.item} container spacing={3}> | 46 | <Grid className={classes.item} container spacing={3}> |
47 | + {data.map((data) => { | ||
48 | + return ( | ||
36 | <Grid item xs="6" sm="6" md="3"> | 49 | <Grid item xs="6" sm="6" md="3"> |
37 | <TodoCard data={data} /> | 50 | <TodoCard data={data} /> |
38 | </Grid> | 51 | </Grid> |
39 | - <Grid item xs="6" sm="6" md="3" alignItems="center"> | 52 | + ); |
53 | + })} | ||
54 | + <Grid item xs="6" sm="6" md="3"> | ||
40 | <Icon style={{ fontSize: 60 }}>add_circle</Icon> | 55 | <Icon style={{ fontSize: 60 }}>add_circle</Icon> |
41 | </Grid> | 56 | </Grid> |
42 | </Grid> | 57 | </Grid> |
43 | </Container> | 58 | </Container> |
44 | ); | 59 | ); |
60 | + } | ||
45 | } | 61 | } | ... | ... |
... | @@ -37,6 +37,7 @@ const useStyles = makeStyles({ | ... | @@ -37,6 +37,7 @@ const useStyles = makeStyles({ |
37 | export default function TodoCard(props) { | 37 | export default function TodoCard(props) { |
38 | const classes = useStyles(); | 38 | const classes = useStyles(); |
39 | const data = props.data; | 39 | const data = props.data; |
40 | + console.log(data); | ||
40 | return ( | 41 | return ( |
41 | <Card className={classes.root}> | 42 | <Card className={classes.root}> |
42 | <CardContent> | 43 | <CardContent> | ... | ... |
... | @@ -2,9 +2,4 @@ import React from "react"; | ... | @@ -2,9 +2,4 @@ import React from "react"; |
2 | import ReactDOM from "react-dom"; | 2 | import ReactDOM from "react-dom"; |
3 | import App from "./App"; | 3 | import App from "./App"; |
4 | 4 | ||
5 | -ReactDOM.render( | 5 | +ReactDOM.render(<App />, document.getElementById("root")); |
6 | - <React.StrictMode> | ||
7 | - <App /> | ||
8 | - </React.StrictMode>, | ||
9 | - document.getElementById("root") | ||
10 | -); | ... | ... |
1 | -const express = require('express'); | 1 | +const express = require("express"); |
2 | -const bodyParser = require('body-parser'); | 2 | +const bodyParser = require("body-parser"); |
3 | const app = express(); | 3 | const app = express(); |
4 | const port = process.env.PORT || 5000; | 4 | const port = process.env.PORT || 5000; |
5 | app.use(bodyParser.json()); | 5 | app.use(bodyParser.json()); |
6 | app.use(bodyParser.urlencoded({ extended: true })); | 6 | app.use(bodyParser.urlencoded({ extended: true })); |
7 | 7 | ||
8 | -app.get('/api/hello', (req, res) => { | 8 | +app.get("/api/cards", (req, res) => { |
9 | -res.send({ message: 'Hello Express!' }); | 9 | + res.send([ |
10 | + { | ||
11 | + date: "2020-99-99", | ||
12 | + name: "daehwi", | ||
13 | + isPublic: true, | ||
14 | + title: "열글자까지가능합니다.", | ||
15 | + todo: ["응가하기", "똥싸기", "변누기"], | ||
16 | + }, | ||
17 | + { | ||
18 | + date: "2020-99-99", | ||
19 | + name: "fuck", | ||
20 | + isPublic: true, | ||
21 | + title: "열글자까지가능합니다.", | ||
22 | + todo: ["응가하다말기", "똥싸기", "변누기"], | ||
23 | + }, | ||
24 | + { | ||
25 | + date: "2020-99-99", | ||
26 | + name: "성훈", | ||
27 | + isPublic: true, | ||
28 | + title: "열글자까지가능할걸요.", | ||
29 | + todo: ["응가하면서폰보기", "똥싸기", "변누기"], | ||
30 | + }, | ||
31 | + ]); | ||
10 | }); | 32 | }); |
11 | 33 | ||
12 | app.listen(port, () => console.log(`Listening on port ${port}`)); | 34 | app.listen(port, () => console.log(`Listening on port ${port}`)); | ... | ... |
-
Please register or login to post a comment