카테고리 없음
객체/배열 복사 & 무한스크롤
KBstar⭐
2022. 4. 18. 22:06
✔얕은 복사(Shallow Copy)
✔ 깊은 복사(Deep Copy)
✔ 무한 스크롤(Infinte Scroll)
1. 얕은 복사(Shallow Copy)
- 얕은 복사란 배열이 가진 객체 즉, 주소값을 복사한다.
- 원본의 값이나 복사된 값이 변경될 경우 두 값 모두 변경되는 단점이 있다.
![]() |
- profile 배열을 friendprofile에 복사 한뒤 - 원본(profile)의 이름을 영희로 바꾸어 보았다 - 확인을 해보면 원본(profile)과 사본(friendprofile)의 이름이 둘다 바뀜 |
- 이러한 얕은 복사에 수많은 객체가 있을 경우 한번에 복사해주는 기능이 있는데 스프레드연산자라고 한다.
- 배열안에 있는 객체를 한방에 가져올 수 있는 아주 편리한 메서드이다.
![]() |
- 스프레드연산자(spread): "...(복사한배열)" 이렇게 작성해준다. |
⭐ 실무에서 활용하는 스프레드연산자
![]() |
- 위(🔺) 사진처럼 inputs 값들이 중복 됐을 경우 스프레드 연산자를 이용해서 아래(🔻) 사진처럼 간결한 코드로 리팩토링이 가능하다. |
![]() |
💥주의할 점
- 배열 안에 있는 키 값들이 중복됐을 경우, 아래의 키 값이 위의 키값을 덮어 씌워 아래 키 값이 출력된다.
- const(상수)로 배열을 변수에 저장해뒀어도 배열안의 객체값은 주소값이기 때문에 각 객체의 변경이 가능하다.
2. 깊은 복사(Deep Copy)
- 배열안에 있는 모든 객체를 문자열로 바꾼다.
- 바꾼 그 문자열을 다시 객체로 바꿔준다.
- 여기서 만들어진 객체는 기존 객체와 다르게 아주 새로운 객체이다(🔻)
1) 예제 01![]()
|
2) 예제 02![]()
|
3. 무한 스크롤(Infinite Scroll)
- 사용자가 페이지 하단에 도달했을 때, 콘텐츠가 계속해서 로드되는 사용자 경험(UX)방식이다.
장점
1) 사용자 참여 및 콘텐츠 탐색이 쉽다.
2) 다음 콘텐츠를 보기위한 페이지 로드 시간이 짧다.
3) 터치스크린(모바일)일 경우 더 유용하다(모바일 환경에서 훨씬 직관적이고 사용하기 쉬운 형식)
단점
1) 페이지 성능이 느려진다
2) 특정 항목 검색 및 원래 위치로 되돌아오기 힘들다.
3) 스크롤 막대가 실제 데이터양을 반영하지 못한다.
4) 하단(footer)을 찾기 어려워진다.
사용방법
- 가장 많이 사용되는 react infinite scroller 라이브러리를 설치해준다.
- yarn add react-infinite-scroller
- import를 해준뒤 scroll events 코드는 그대로 가져다 쓰면 된다!
- 로딩 부분은 따로 조정해주자!
💥loadMore / hasMore
- loadMore : 스크롤 내릴 때 실행되는 함수
- hasMore : true일 때, 스크롤 내리면 loadMore가 실행이 된다.
💥주의할 점❗❗
- 데이터가 없을때에도 인피니트 스크롤러는 계속 실행중이기 때문에, fetchMore를 멈추기 위해 데이터 자체가 없을 때는 리턴을 해준다!