react
댓글 구현하기 간단정리
알파빗
2022. 10. 23. 16:15
우선 전체 코드
const [reply, setReply] = useState('');
const [replyArray, setReplyArray] = useState([]);
const replyreplace = reply.replace(/ /g, '');
const isreplyempty = replyreplace <= 0 ? true : false;
const resultColor = isreplyempty ? '#9C9C9C' : 'blue';
const saveReply = e => {
setReply(e.target.value);
};
const replySet = event => {
event.preventDefault();
if (reply === '') {
return;
} else {
setReplyArray(replyList => [...replyList, reply]);
setReply('');
}
};
return (
<div className="extra">
<div className="likes">aineworld님 외 10명이 좋아합니다</div>
<div className="text">
<div className="mid">
<div className="mid_1"> wecode </div>{' '}
<div className="mid_2"> dream room</div>
<div className="mlikes" />
</div>
<div className="w_reply">
{replyArray.map(sth => (
<form onSubmit={replySet} key={sth}>
<div className="w_replyArray">
<div className="w_reply_id"> ys_dd002 </div>
<div className="w_reply_txt">{sth} </div>
<div className="w_icon">
{' '}
<i className="fa-regular fa-heart" />
{' '}
</div>
<div className="w_delete"> 삭제 </div>
</div>
</form>
))}
</div>
</div>
<form className="reply">
<input
id="reply"
type="text"
placeholder="댓글달기.."
onChange={saveReply}
value={reply}
/>
<button
className="replybutton"
style={{ color: resultColor }}
onClick={replySet}
>
게시
</button>
</form>
</div>
);
}
export default Reply;
내려오면
const [reply, setReply] = useState('');
const [replyArray, setReplyArray] = useState([]);
앞부분이 변수고 뒷부분이 함수이다. useState를 통해서 변수가 함수를 통해 값이 바뀐다.
const saveReply = e => {
setReply(e.target.value);
};
이건 input에 넣어진 값을 가져오는 함수이다.
const replySet = event => {
event.preventDefault();
if (reply === '') {
return;
} else {
setReplyArray(replyList => [...replyList, reply]);
setReply('');
}
};
이건 댓글을 쌓아올리는 함수이다.
<div className="w_reply">
{replyArray.map(sth => (
<form onSubmit={replySet} key={sth}>
<div className="w_replyArray">
<div className="w_reply_id"> ys_dd002 </div>
<div className="w_reply_txt">{sth} </div>
<div className="w_icon">
{' '}
<i className="fa-regular fa-heart" />
{' '}
</div>
<div className="w_delete"> 삭제 </div>
</div>
</form>
))}
</div>
이건 map으로 input값이 들어와 버튼이 눌리면 input값을 넣어 댓글을 생성해낸다
<form className="reply">
<input
id="reply"
type="text"
placeholder="댓글달기.."
onChange={saveReply}
value={reply}
/>
<button
className="replybutton"
style={{ color: resultColor }}
onClick={replySet}
>
게시
</button>
</form>
이건 input창과 버튼을 나타내는 함수다