App.js 5.01 KB
Newer Older
baesangjune's avatar
baesangjune committed
1
import React, { useState, useEffect } from 'react';
baesangjune's avatar
baesangjune committed
2
import { Redirect } from 'react-router-dom';
Kim, Chaerin's avatar
?    
Kim, Chaerin committed
3
import ohuh from '../ohuh.PNG';
baesangjune's avatar
baesangjune committed
4
5
6
import { Container, Row, Form, Image, InputGroup, Button, Col, Card } from 'react-bootstrap';
import axios from 'axios';
import Place from '../Components/Place';
Lee SeoYeon's avatar
.    
Lee SeoYeon committed
7
import ohuh from '../ohuh.PNG'
Lee SeoYeon's avatar
..    
Lee SeoYeon committed
8
import { Container, Row, Form, Image, InputGroup, Button, Col, Nav } from 'react-bootstrap';
Lee SeoYeon's avatar
.    
Lee SeoYeon committed
9
import { handleLogout, isAuthenticated } from '../utils/auth.js'
Kim, Chaerin's avatar
?    
Kim, Chaerin committed
10
11
12
13

function App() {
  const [state, setState] = useState(false);
  const [search, setSearch] = useState("");
baesangjune's avatar
baesangjune committed
14
15
16
  const [show, setShow] = useState(false);
  const [recommend, setRecommend] = useState([{ name: " ", address: " ", img: " " }]);
  const [latest, setLatest] = useState([{ name: " ", address: " ", img: " " }]);
Kim, Chaerin's avatar
?    
Kim, Chaerin committed
17

18
19
20
21
22

  useEffect(() => {
    getRecommend()
    getLatest()
  }, []);
Lee SeoYeon's avatar
0111    
Lee SeoYeon committed
23
  const user = isAuthenticated()
24

Kim, Chaerin's avatar
?    
Kim, Chaerin committed
25
  if (state !== false) {
Kim, Chaerin's avatar
Kim, Chaerin committed
26
    return <Redirect to={`/search?keyword=${search}`} />;
Kim, Chaerin's avatar
?    
Kim, Chaerin committed
27
28
29
30
  }

  const handleChange = (e) => {
    setSearch(e.target.value);
Lee SeoYeon's avatar
.    
Lee SeoYeon committed
31
  } //바뀌는 것이 있을때 이벤트 발생
Kim, Chaerin's avatar
?    
Kim, Chaerin committed
32
33
34

  const handleSubmit = () => {
    setState(true);
Lee SeoYeon's avatar
.    
Lee SeoYeon committed
35
  } //submit 버튼을 누르면 state 값을 true로 바뀐다
Kim, Chaerin's avatar
?    
Kim, Chaerin committed
36

baesangjune's avatar
baesangjune committed
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
  const getRecommend = () => {
    axios.get(`/api/app/recommend`)
      .then(res => {
        setRecommend(res.data)
      })
      .catch(err => {
        console.log("APP RECOMMEND ERROR", err)
      })
  }

  const getLatest = () => {
    axios.get(`/api/app/lastest`)
      .then(res => {
        setLatest(res.data)
      })
      .catch(err => {
        console.log("APP LATEST ERROR", err)
      })
55
56
57
  }


baesangjune's avatar
baesangjune committed
58

Kim, Chaerin's avatar
?    
Kim, Chaerin committed
59
  return (
60

61
62
63
64
65
66
    // <Container className="vh-100 ">
    //   <Col md={12} >
    //     <Row className="justify-content-center" >
    //       <Image src={ohuh} style={{ margin: "5%", marginTop : "3%" }} />
    //     </Row>
    //     <Row style={{ marginBottom: "5%" }}>
Kim, Chaerin's avatar
서연    
Kim, Chaerin committed
67
    <Container className="vh-100 d-flex justify-content-md-center align-items-center">
Lee SeoYeon's avatar
.    
Lee SeoYeon committed
68
69
      <Col md={6} style={{ marginTop: 140 }}>
        <Nav className="justify-content-end" bg="#fff" variant="light" >
Lee SeoYeon's avatar
.    
Lee SeoYeon committed
70
          {user ? <Nav.Link onClick={() => handleLogout()}>로그아웃</Nav.Link>
Lee SeoYeon's avatar
.    
Lee SeoYeon committed
71
72
73
74
75
76
77
78
79
            : (
              <>
                <Nav.Link href="/signup">회원가입</Nav.Link>
                <Nav.Link href="/login">로그인</Nav.Link>
              </>
            )}
          <Nav.Link href='/bookmark'>북마크</Nav.Link>
        </Nav>
        <Row style={{ marginBottom: 20 }}>
Kim, Chaerin's avatar
서연    
Kim, Chaerin committed
80
          <Image src={ohuh} />
81
        </Row>
Lee SeoYeon's avatar
.    
Lee SeoYeon committed
82
        <Row style={{ marginBottom: 500 }}>
83
          <Form className="vw-100" onSubmit={handleSubmit}>
Lee SeoYeon's avatar
.    
Lee SeoYeon committed
84
            <InputGroup style={{ width: 560 }}>
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
              <Form.Control
                size="lg"
                placeholder="검색어를 입력하세요."
                aria-label="Large"
                aria-describedby="inputGroup-sizing-sm"
                onChange={handleChange}
              />
              <InputGroup.Append>
                <Button type='submit' variant="outline-secondary">검색</Button>
              </InputGroup.Append>
            </InputGroup>
          </Form>
        </Row>
        <Row  >
          <Col md={6} >
            <h1 className=" d-flex justify-content-center" style={{marginBottom:"7%"}}>인기관광지</h1>
            <Card align="center" border="info" style={{ margin: "3%" }}>
              <Card.Title style={{ margin: "3%", fontSize: '200%', fontWeight: 'bold' }} >{recommend.name}</Card.Title>
              <Card.Img variant="top" style={{ padding: "5%", width: "100%", height: "340px" }} src={recommend.img} />
              <Card.Body >
                <Card.Text style={{ overflow: 'auto', fontSize: '25px', width: '100%', height: "80px" }} >
                  {recommend.address} </Card.Text>
                <Button variant="primary" onClick={() => {
                  setShow(true)
                }}>{recommend.name} 자세히 살펴보기</Button>
                <Place place={recommend} show={show} onHide={() => setShow(false)} />
              </Card.Body>
            </Card>
          </Col>

          <Col md={6} >
            <h1 className=" d-flex justify-content-center" style={{marginBottom:"7%"}}>최근 검색관광지</h1>
            <Card align="center" border="info" style={{ margin: "3%" }}>
              <Card.Title style={{ margin: "3%", fontSize: '200%', fontWeight: 'bold' }} >{latest.name}</Card.Title>
              <Card.Img variant="top" style={{ padding: "5%", width: "100%", height: "340px" }} src={latest.img} />
              <Card.Body >
                <Card.Text style={{ overflow: 'auto', fontSize: '25px', width: '100%', height: "80px" }} >
                  {latest.address} </Card.Text>
                <Button variant="primary" onClick={() => {
                  setShow(true)
                }}>{latest.name} 자세히 살펴보기</Button>
                <Place place={latest} show={show} onHide={() => setShow(false)} />
              </Card.Body>
            </Card>
          </Col>
        </Row>
      </Col>
    </Container>


Kim, Chaerin's avatar
?    
Kim, Chaerin committed
135
136
137
  );
}

Lee SeoYeon's avatar
0113    
Lee SeoYeon committed
138
export default App;