Contents
detail.js이렇게 적으면 안돼
아웃터조인해야 함. 아니면 left join
왜냐면 이렇게 하면, 댓글 없는 게시글은 보이지 않으니까.

detail.js
import React from "react";
import { Button } from "react-bootstrap";
import { Link } from "react-router-dom";
const Detail = (props) => {
function fetchDelete(postId) {}
return (
<div>
<Link to={"/updateForm/1"} className="btn btn-warning">
수정
</Link>
<Button className="btn btn-danger" onClick={() => fetchDelete(1)}>
삭제
</Button>
<br />
<br />
<h1>제목1</h1>
<hr />
<div>내용1</div>
</div>
);
};
export default Detail;
확인하면 이렇게 되어 잇음.

localhost:8080/api/boards/1/detail하면,



애는 오브젝트


pathvariable이런 식으로 받아왔었지!

input.js 찾아보삼. github에







jsx에 바인딩만 해둬라.


Detail.js
import axios from "axios";
import React, { useEffect, useState } from "react";
import { Button } from "react-bootstrap";
import { Link, useParams } from "react-router-dom";
const Detail = (props) => {
const { id } = useParams();
const [post, setPost] = useState({
id: undefined,
title: "",
content: "",
userId: undefined,
username: "",
owner: false,
replies: [],
});
useEffect(() => {
console.log("postId", id);
fetchDetail(id);
}, []);
async function fetchDetail(postId) {
let response = await axios({
url: `http://localhost:8080/api/boards/${postId}/detail`,
});
let responseBody = response.data;
setPost(responseBody.body);
}
function fetchDelete(postId) {}
return (
<div>
<Link to={"/updateForm/1"} className="btn btn-warning">
수정
</Link>
<Button className="btn btn-danger" onClick={() => fetchDelete(post.id)}>
삭제
</Button>
<br />
<br />
<h1>{post.title}</h1>
<hr />
<div>{post.content}</div>
</div>
);
};
export default Detail;

4321 ⇒ 제목4321로 됨.-v
computer priperies?? 하려고

Share article