728x90
반응형
1. 화면
1. 댓글이 없으면 '댓글 없음'을 알려주고 있으면 댓글 보여주기
2. 댓글 등록시 작성자/내용에 최대 글자수 제한주기
2. 코드
(1) 댓글 유무에 따른 화면 구성
//멤버에 따라 댓글 필터링
const filteredByMember = comments.filter((comment) => comment.member === member);
//필터링된 댓글 없으면 '댓글없음 '표시
if (filteredByMember.length === 0) {
return (
<StSection>
<StP3>{member}의 등록된 팬레터가 없습니다. 댓글을 남겨주세요!</StP3>
</StSection>
);
}
▶ 멤버에 따라 필터링 하고 length로 구분
return (
<>
{filteredByMember.map((comment) => {
return (
<StSection key={comment.id}>
<Link to={`detail/${comment.id}`}>{comment.member}</Link>
<StDiv>
<figure>
<StImg src={personImg} alt="프로필 사진"></StImg>
</figure>
<StP>{comment.writer}</StP>
</StDiv>
<div>
<StP2>{comment.content}</StP2>
</div>
</StSection>
);
})}
</>
);
▶ 댓글이 있는 경우는 해당 멤버의 댓글 보여주기
(2) 작성자/내용 등록시 글자 제한 두기
<StInput
value={writer}
placeholder="최대 20글자까지 작성할 수 있습니다."
maxLength="20"
minLength="2"
onChange={(event,maxlength) => {
//글자수제한
if (event.target.value > maxlength) {
event.target.value = event.target.value.substring(0, maxlength);
}
setWriter(event.target.value);
}}
></StInput>
▶ maxLength='20' / minLength: '2' -> 최대길이와 최소길이를 설정함
▶ input type ="text"일 경우 (input의 default값은 text) maxLength만해도 설정 가능 !
▶ 댓글 등록하는 구간 & 수정하는 구간 2곳 모두 수정해야함.
if (event.target.value > maxlength) {
event.target.value = event.target.value.substring(0, maxlength);
}
▶ input type ="number" 일 경우 onChange 이벤트 안에 해당 함수를 넣어줘야한다.
끝.
반응형
'TIL :: Today I Learned' 카테고리의 다른 글
리액트 팬레터 홈페이지 만들기: 2단계. contextAPI로 리팩토링 (0) | 2023.11.16 |
---|---|
리액트 팬레터 홈페이지 만들기: 1단계. props-drilling 만들기 완료. (0) | 2023.11.15 |
리액트 팬레터 홈페이지 만들기: 댓글 수정 기능 구현 (0) | 2023.11.14 |
#06 리액트 숙련 : useState 함수형 업데이트 (0) | 2023.11.13 |
#05 리액트 숙련 : 투두리스트의 상세페이지 연결하기(성공) (0) | 2023.11.10 |