일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 프로젝트
- Node
- 원티드인턴십
- Mac OS NVM
- react portal
- git
- 원티드프리온보딩
- input error
- NextJs
- toast err
- 알고리즘
- Redux
- NVM
- 광고지구
- JS
- CloudFront 무효화
- 인풋태그 엔터
- 원티트 프리온보딩인턴십 1주차
- jsEvent Loop
- Passed by Value
- 회고록
- CPU와 GPU의 차이점
- 식별자란
- JavaScript
- Til
- react
- next/link
- 향해99
- Client-Side Navigation
- 유령 의존성
- Today
- Total
SUIN
[TIL] 22.01.14 리스트 목록 토글 구현 본문
설명
다이어리 페이지 찜 리스트 목록 리스트에 토글을 눌렀을 때 MixBox안에 음원 정보의 데이터가 나타나며 각 목록의 타이틀 수정과 삭제를 할 수 있어야 한다.
첫 번째 도전!
목록이 각각 선택되었을 때 토글의 state상태를 true, false로 바꿔주면서 MixBox true일 때 MixBox 가 나타나는 코드를 구현했었다
그러니...😭
1개의 리스트를 선택했는데 모든 리스트의 MixBox가 나타나는 현상이 발생되었는데 아마 state상태를 true, false 로만 설정하다 보니 playlist 가 맵핑 과정에서 모든 리스트가 true로 인지해서 MixBox가 나타나는 것이었다
두 번째 도전!
선택했을 때 각각의 리스트를 따로 제어할 수 있을까 고민을 하다가 map함수의 index를 사용해서 각각 제어해보자라고 생각을 했고 적용 결과 리스트들이 각각 따로 적용되는 것을 확인했다
하지만 여기서 또 하나의 문제가 발생했다... 😭 😭
인덱스 값으로 true, false 제어하다 보니 리스트가 삭제되었을 때 해당 삭제된 리스트의 인덱스 +1 번째 리스트가 그대로 토글이 true인 상태가 되면서 MixBox가 열리는 것이었다!
세 번째 도전!
여기서 인덱스는 사용할 수 없겠다고 생각을 했고 DB에서 받아오는 데이터에서 해당 리스트의 고유한 리스트의 Idx값을 보내주는 것을 이용해서 index가 아닌 playlistIdx 사용해서 적용해보았고
해당 리스트가 삭제가 되어도 리스트의 고유한 인덱스 값을 다른 리스트에게 적용될 수 없었다!!
{playList.map((item, idx) => {
return (
<div key={idx}>
<List
icon={mixList}
src={toggle[item.playlistIdx] ? path_T : path_B}
_onClick={() => toggleComment(item.playlistIdx)}
>
{item.mixTitle}
</List>
{toggle[item.playlistIdx] ? (
<MixBox
mixList={item.mixList}
playlistIdx={item.playlistIdx}
mixTitle={item.mixTitle}
toggle={toggle}
></MixBox>
) : null}
</div>
);
})}
const [playList, setPlayList] = React.useState(
playListInfo ? playListInfo : null
);
//-- 토글 --
const [toggle, setToggle] = React.useState({});
//-- 토글 클릭시 --
const toggleComment = (idx) => {
setToggle((prevToggle) => ({
...prevToggle,
[idx]: !prevToggle[idx],
}));
};
+ 오늘 한일
이번 주 팀원들과 목표 진행상황을 정리해보니 뭔가 엄청 바쁘게 많이 했다고 생각했는데 완료된 부분이 많이 없었다
아마 믹스 페이지(찜하기) 추가 기능 구현에 중심을 먼저 두다 보니 성능 최적화, CICD 등의 목표를 진행하지 못한 것 같아서 아쉬움이 남는다
4주 동안 아직 해결하지 못했던 PWA푸시 알림에 대해서 오늘마저 찾아보고 내일 테스트를 진행해봐야 할 것 같다
백엔드분들이 아직 개발하지 못한 부분이 있어서 PWA 푸시 알림 부분은 node관련 자료도 함께 스크랩해서 내일 백분들과 이야기를 해봐야 할 것 같다
푸쉬알림아 너 왜 이렇게 만나기 어렵니??? ^^
'TIL' 카테고리의 다른 글
[TIL]22.02.03 반성하기 (0) | 2022.02.04 |
---|---|
[TIL] 22.01.15 파이어베이스 FCM 알림 허용시 푸쉬알림 테스트 적용 (0) | 2022.01.15 |
[TIL]21.01.11 컴포넌트 쪼개기 정리 (0) | 2022.01.12 |
[TIL] 2021.12.31 새해도 향해와 함께 ㅎ^ㅎ (0) | 2022.01.01 |
[TIL]21.12.30 실전프로젝트 이제 팀원들과 조금은 친해진걸까...? (0) | 2021.12.31 |