Showing
7 changed files
with
70 additions
and
36 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 | - return ( | 33 | + useEffect(() => { |
34 | - <Container className={classes.root} maxwidth="sm"> | 34 | + callApi() |
35 | - <Grid className={classes.item} container spacing={3}> | 35 | + .then((res) => setData(res)) |
36 | - <Grid item xs="6" sm="6" md="3"> | 36 | + .catch((err) => console.log(err)); |
37 | - <TodoCard data={data} /> | 37 | + }); |
38 | - </Grid> | 38 | + |
39 | - <Grid item xs="6" sm="6" md="3" alignItems="center"> | 39 | + if (!data) { |
40 | - <Icon style={{ fontSize: 60 }}>add_circle</Icon> | 40 | + return <p>ㄱㄷㄱㄷ</p>; |
41 | + } else { | ||
42 | + console.log(123); | ||
43 | + console.log(data); | ||
44 | + return ( | ||
45 | + <Container className={classes.root} maxwidth="sm"> | ||
46 | + <Grid className={classes.item} container spacing={3}> | ||
47 | + {data.map((data) => { | ||
48 | + return ( | ||
49 | + <Grid item xs="6" sm="6" md="3"> | ||
50 | + <TodoCard data={data} /> | ||
51 | + </Grid> | ||
52 | + ); | ||
53 | + })} | ||
54 | + <Grid item xs="6" sm="6" md="3"> | ||
55 | + <Icon style={{ fontSize: 60 }}>add_circle</Icon> | ||
56 | + </Grid> | ||
41 | </Grid> | 57 | </Grid> |
42 | - </Grid> | 58 | + </Container> |
43 | - </Container> | 59 | + ); |
44 | - ); | 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}`)); | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
34 | +app.listen(port, () => console.log(`Listening on port ${port}`)); | ... | ... |
-
Please register or login to post a comment