카테고리 없음
Til (2022.12.26)
prdg
2022. 12. 27. 15:14
상세페이지마다 댓글 분리
<ProductComment product_post_id={product_post?.id} />
const { product_comments } = useSelector((state) => {
return state.product_comments;
});
/*댓글 작성*/
const onSubmitHandler = (e) => {
e.preventDefault();
if (title == "") {
return alert("제목을 입력해주세요");
} else if (content == "") {
return alert("내용을 입력해주세요");
}
let NewData = {
id: uuid(),
product_post_id: props.product_post_id,
**/*아이디를 본문에서 받아옴*/**
content,
title,
toggledisplay: false,
};
dispatch(__addproduct_comments(NewData));
setContent("");
setTitle("");
};
/*댓글*/
const product_comment = product_comments
.filter((item) => {
return item.product_post_id === props.product_post_id;
**/*본문 아이디랑 같으면 표시*/**
})
.map((t) => {
return (
<div key={t.id} className="productCommentText">
<form onSubmit={(e) => productCommentOnSubmit(e, t)}>
<p>
{t.toggledisplay ? (
<input
type="text"
value={editTitle}
onChange={(e) => {
setEditTitle(e.target.value);
}}
maxLength={10}
/>
) : (
t.title
)}
</p>
<p>
{t.toggledisplay ? (
<input
type="text"
onChange={(e) => {
setEditContent(e.target.value);
}}
value={editContent}
maxLength={25}
/>
) : (
t.content
)}
</p>
{t.toggledisplay ? <button>완료</button> : ""}
</form>
<div>
<button
onClick={() => {
ProductEdit(t);
}}
>
{t.toggledisplay ? "취소" : "수정"}
</button>
<button onClick={DeletePost}>삭제</button>
</div>
</div>
);
});
각 상세페이지 마다 각 페이지의 댓글만 보이게 하기 위해 props로 받아 온 본문의 id를 댓글 작성 할 때 객체로 들어가게 한 다음 그것과 본문의 id가 일치 할때만 filter, map을 이용해 표시하게 했다.