Skip to content
Snippets Groups Projects
PostRead.js 2.26 KiB
Newer Older
Hyun Woo Jeong's avatar
Hyun Woo Jeong committed
import { useNavigate } from 'react-router-dom';
Hyun Woo Jeong's avatar
Hyun Woo Jeong committed
import { useParams } from 'react-router-dom';
import React, { useEffect, useState, useContext} from 'react';
import Article from '../components/Article.js';
import { UserContext } from '../Context.js';
Hyun Woo Jeong's avatar
Hyun Woo Jeong committed
import MapLocator from '../components/MapForLoaction.js';

Hyun Woo Jeong's avatar
Hyun Woo Jeong committed

import axios from 'axios';
axios.defaults.withCredentials = true;

function PostRead() {
    let params = useParams();
    const userContext = useContext(UserContext);
    const [article, setArticle] = useState(null)
Hyun Woo Jeong's avatar
Hyun Woo Jeong committed
    const navigate = useNavigate();
    function MoveTo(link){
      navigate(link)
    }	
Hyun Woo Jeong's avatar
Hyun Woo Jeong committed
    useEffect(() => {
Hyun Woo Jeong's avatar
Hyun Woo Jeong committed
      userContext.CheckSession()
Hyun Woo Jeong's avatar
Hyun Woo Jeong committed
      .then((response) => {
Hyun Woo Jeong's avatar
Hyun Woo Jeong committed
          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)
        })

Hyun Woo Jeong's avatar
Hyun Woo Jeong committed
    }, []);  
Hyun Woo Jeong's avatar
Hyun Woo Jeong committed
    console.log(article);
    console.log(article?Object.values(article):"no");
    if (article) {
      return(
Hyun Woo Jeong's avatar
Hyun Woo Jeong committed
        <div className="App" >
            <div className="introduction" style={{display: 'flex'}}>
              <MapLocator loc={{lat: article.latitude, lng: article.longitude}} keyword={article.keyword}></MapLocator>
Hyun Woo Jeong's avatar
Hyun Woo Jeong committed
              <Article data={Object.values(article)}></Article>
            </div>
Hyun Woo Jeong's avatar
Hyun Woo Jeong committed
            댓글창, 댓글쓰기, 조와요 누르기
            포스트 내용
            <p>현재 페이지의 파라미터는 { params.id } 입니다.</p>
Hyun Woo Jeong's avatar
Hyun Woo Jeong committed
        </div>)
    }
    else {
      return(
        <div className="App">
          <h1>포스트 페이지</h1>
Hyun Woo Jeong's avatar
Hyun Woo Jeong committed
            <div className="introduction" style={{display: 'flex'}}>
Hyun Woo Jeong's avatar
Hyun Woo Jeong committed
              <p>로딩준</p>
            </div>
        </div>)
    }

    ;
  }

  async function requestLoadArticleById(id) {
    const response = await axios({
      url: `http://localhost:8080/post/loadarticle/${id}`, // 통신할 웹문서
      method: 'get', // 통신할 방식
    });
    return response;
    }

  export default PostRead;