이번주부터 React가 시작되었다.
지난주까지 JavaScrip로 만들었던 인별그램을 React로 구현해보면서 공부하는 것이 목표!
전에 감정일기 만드는 강의를 지난 주말에 기본 state부터 정리하면서 도움이 되었었던것 같다. (100% 흡수는 못했지만 전보단 개념이나 사용법이 머리에 들어온 것 같은 ..ㅎ)
큰 덩어리에서부터 작은 단위로 쪼개 내려가면서 props 전달에 대해 조금씩 이해된 것 같다.
main.js에서 목데이터 만들어서 각 피드에서 props를 단계적으로 사용하였다. (user id, user img, content text, like 등...)
또한, 데이터에 담겨져 있는 값들을 변동시키려면 main.js에서 메소드를 prop으로 넘겨줘서 끌어올려줘야 했다.
피드 자체의 like 토글기능은 비교적 간단하게 할 수 있었다.
같이 관리해도 되는 state를 객체로 사용할 수 있다는 것
<Link>
와 <useNavigate>
의 차이
데이터 props 전달 시 { }
사용하는 이유! 구조 분해 할당
좋아요처럼 토글기능 구현 시 state를 사용하여야만 가능한 줄 알았는데, 단락회로평가(연산)를 사용한 불리언값으로 간단히 구현할 수 있었다.
그동안 배열값에 map사용하여 넣어주기만 했었는데,
슬라이드 불릿 생성 시 생성해야하는 엘리먼트의 갯수만 가지고 있는 상태에서 <li>
를 생성하는 법이 어려웠다.
=> new Array를 사용하여 갯수만큼 배열을 만들어주어 map을 사용할 수 있었다
조건 검색하여 리턴해주는 것을 filter를 사용하였을 땐 , 댓글 좋아요 토글 시 0번인덱스를 불러와 주는것을 추가로 입력해줬어야했는데 find를 알게되어 바로 사용 가능하였다.
map 사용시 index가 변동있을 경우 내가 작업한 useEffect말고 key를 어떻게 주는게 좋은건지 더 생각 해 봐야 겠다.
특히 댓글부분 작업하면서 막히는게 많았던 것 같다.
- 댓글 삭제시 key값 꼬이는 것
- 해당 댓글의 like를 어떻게 변경 할 것인가!
댓글리스트 map을 돌릴 때 key값으로 댓글 데이터의 id값을 가져와서 사용하였다.
댓글 생성할 때에는 id에 현재 리스트의 length를 넣어주고, 삭제 시에는 해당 댓글의 인덱스를 filter로 걸러주었는데
그렇게 하니 id와 index가 일치하지 않게되고 key가 꼬이게 되었다.
=> 리스트가 업데이트 될 때마다 key값을 새로 index로 정렬해주면 되려나? 라는 생각으로 useEffect
를 사용하여 리스트가 업데이트 될 때마다 리스트의 id값을 다시 index 순서대로 넣어주었더니 해결되었다!!
공부하며 정리&기록하는 ._. 씅로그