글 삭제를 제작했다. 에로 사항이 있었다면 글만 삭제 된다는 것이었다.
// 최종 코드
<button className="remove-btn" onClick={() => {
let remove = [...글제목]; // 새 배열 형성
remove.splice(i, 1); // 클릭된 인덱스의 배열에서 1자리 제거하기
제목수정(remove); // 새로운 스테이트로 변경
}}>
배열의 해당 [i]의 값을 null 처리하니 글 제목만 삭제 되었다.
문제는 null은 공백 값이기 때문이었다. 그래서 map은 값이 그래도 “배열에 존재함” 이라
인식하고 map에서 해당 “글 제목 값만” 삭제했던 것이다.
let remove = [...글제목];
remove[i] = null;
제목수정(remove);
null 처리하면 [글제목] = useState('a, b, c, ""')
출처 : MDN-CDN_DOCS
null 은 JavaScript의 원시 값 중 하나로, 어떤 값이 의도적으로 비어있음을 표현하며 불리언 연산에서는 거짓으로 취급합니다.
글 추가
input에 값이 없어도 공백으로 state에 추가해서 글이 추가된다.
해결 : onClick시 e.targetValue 가 공백이 아닐 시에만 ! 입력 값에 추가해준다.
<button onClick={function () {
if **(입력값 !== "")** {
제목수정(글제목.concat(입력값));
}
}}
>
// 하지만 이 코드에는 하나의 문제점이 있다. 바로 글이 *뒤에* 생긴다는 것. 앞에 생기게 하려면
let newCopy = [...글제목]
newCopy.unshift(입력값) // 배열 맨 앞에 추가해주세요
제목수정(newCopy)
추가 문제
글을 추가하니 새로운 HTML에는 좋아요 형성되지만 기존 것들의 좋아요가 사라진다.