diff --git a/frontend/src/components/MapForLoaction.js b/frontend/src/components/MapForLoaction.js new file mode 100644 index 0000000000000000000000000000000000000000..72fce449dcd1ccfbc31b1b0088307a3ebd023be7 --- /dev/null +++ b/frontend/src/components/MapForLoaction.js @@ -0,0 +1,38 @@ +import { Map, MapMarker } from "react-kakao-maps-sdk"; +import React, { useRef, useState, useEffect, useContext } from 'react'; + +const { kakao } = window; + +function MapLocator({ loc, keyword }) { + // 아주대학교를 기본 위치로 설정 + const [info, setInfo] = useState() + const [markers, setMarkers] = useState([]) + const [pagination, setPagination] = useState() + const [map, setMap] = useState() + + + const defaultCenter = { lat: loc.lat, lng: loc.lng } + + return ( + <div className="UserInput"> + <div style={{display: 'flex'}}> + <Map // 지도를 표시할 Container + center={defaultCenter} + style={{ + // 지도의 크기 + width: "300px", + height: "450px" + }} + onCreate={setMap} + isPanto={true} + level={3}> + <MapMarker position={defaultCenter}> + <div style={{color:"#000"}}>{keyword}</div> + </MapMarker> + </Map> + </div> + </div> + ) +} + +export default MapLocator; \ No newline at end of file diff --git a/frontend/src/css/Article.css b/frontend/src/css/Article.css index 7887ef2d078c25d85ddc4622ba5f55f102032738..6e932291be394a181849d705417502bd964d7215 100644 --- a/frontend/src/css/Article.css +++ b/frontend/src/css/Article.css @@ -1,4 +1,8 @@ .article { background-color: #ffffff; border: 2px solid gray; -} \ No newline at end of file +} + +.article:hover { + background-color: #bbbbbb; + } \ No newline at end of file diff --git a/frontend/src/pages/PostRead.js b/frontend/src/pages/PostRead.js index 8008914075bc03c2fea83548154052b69fe40510..bbd4c0f83d8b3810756c976a4dcdfab1eff77138 100644 --- a/frontend/src/pages/PostRead.js +++ b/frontend/src/pages/PostRead.js @@ -1,7 +1,10 @@ +import { useNavigate } from 'react-router-dom'; import { useParams } from 'react-router-dom'; import React, { useEffect, useState, useContext} from 'react'; import Article from '../components/Article.js'; import { UserContext } from '../Context.js'; +import MapLocator from '../components/MapForLoaction.js'; + import axios from 'axios'; axios.defaults.withCredentials = true; @@ -10,33 +13,53 @@ function PostRead() { let params = useParams(); const userContext = useContext(UserContext); const [article, setArticle] = useState(null) + const navigate = useNavigate(); + function MoveTo(link){ + navigate(link) + } useEffect(() => { - requestLoadArticleById(params.id) + userContext.CheckSession() .then((response) => { - console.log(response) - setArticle(response.data) - }) + if (!response.data) { + alert("세션이 만료되었습니다. 다시 로그인 바랍니다.") + MoveTo('/login') + } + else{ + return requestLoadArticleById(params.id) + } + }) + .then((response) => { + console.log(response) + setArticle(response.data) + }) + .catch((response)=>{ + console.log("error!:LogOut") + console.log(response) + }) + }, []); + + + console.log(article); console.log(article?Object.values(article):"no"); if (article) { return( - <div className="App"> - <h1>포스트 페이지</h1> - <div className="introduction"> - 포스트 내용 - <p>현재 페이지의 파라미터는 { params.id } 입니다.</p> + <div className="App" > + <div className="introduction" style={{display: 'flex'}}> + <MapLocator loc={{lat: article.latitude, lng: article.longitude}} keyword={article.keyword}></MapLocator> <Article data={Object.values(article)}></Article> </div> + 댓글창, 댓글쓰기, 조와요 누르기 + 포스트 내용 + <p>현재 페이지의 파라미터는 { params.id } 입니다.</p> </div>) } else { return( <div className="App"> <h1>포스트 페이지</h1> - <div className="introduction"> - 포스트 내용 - <p>현재 페이지의 파라미터는 { params.id } 입니다.</p> + <div className="introduction" style={{display: 'flex'}}> <p>로딩준</p> </div> </div>)