들어가며 검색 기능을 만들다 보면 사용자가 이전에 검색했던 단어를 다시 보여주고 싶을 때가 있습니다. 서버에 저장할 만큼 중요한 정보가 아니라면, 브라우저의 localStorage만으로도 간단한 최근 검색어 기능을 만들 수 있습니다. 이번 글에서는 최근 검색어를 최대 6개까지 저장하고, 중복 검색어는 맨 앞으로 올리는 방식으로 구현해볼게요. ...
[React] 한글 초성으로 이름 필터링하기
들어가며 사용자 목록이나 학생 목록을 만들다 보면 이름을 초성별로 필터링해야 할 때가 있습니다. 예를 들어 ㄱ을 선택하면 김서영, 강도윤처럼 초성이 ㄱ인 이름만 보여주는 방식입니다. 한글은 유니코드 규칙을 이용하면 첫 글자의 초성을 계산할 수 있습니다. 한글 초성 배열 한글 초성은 아래 순서로 구성됩니다. const CHO_SEONG =...
[JavaScript] 한글 가나다순 정렬하기
들어가며 관리자 페이지나 목록 UI를 만들다 보면 이름을 가나다순으로 정렬해야 할 때가 있습니다. JavaScript에서는 배열의 sort() 메서드로 문자열을 정렬할 수 있습니다. 하지만 한글 정렬에서는 단순 sort()보다 localeCompare()를 함께 사용하는 편이 더 명확합니다. 기본 sort 사용하기 const names =...
[React] moment 라이브러리로 날짜 다루기
들어가며 JavaScript의 기본 Date 객체만으로 날짜를 다루다 보면 포맷 변경이나 날짜 계산이 번거롭게 느껴질 때가 있습니다. 이럴 때 날짜 라이브러리를 사용하면 원하는 형식으로 날짜를 보여주거나, 특정 날짜를 더하고 빼는 작업을 쉽게 처리할 수 있습니다. 이번 글에서는 moment의 기본 사용법을 정리해볼게요. 설치하기 npm i...
[CSS] CSS만으로 Scroll Snap 구현하기
Scroll Snap이란? Scroll Snap은 사용자가 스크롤했을 때 특정 요소 위치에 스크롤이 자연스럽게 맞춰지도록 하는 CSS 기능입니다. 예를 들어 상품 카드나 섹션이 하나씩 딱 맞춰 보이게 만들 때 사용할 수 있습니다. JavaScript 없이 CSS만으로 구현할 수 있어서 간단한 스냅 UI에는 매우 유용합니다. 기본 구조 Sc...
[React] 로그인 상태에 따라 라우팅 접근 제한하기
들어가며 서비스를 만들다 보면 로그인한 사용자만 접근할 수 있는 페이지가 필요합니다. 예를 들어 마이페이지, 결제 페이지, 관리자 페이지 같은 화면입니다. 로그인하지 않은 사용자가 이런 페이지에 접근하면 로그인 페이지로 이동시키는 처리가 필요합니다. PrivateRoute 만들기 React Router에서는 조건에 따라 Navigate를 ...
[React] react-intersection-observer로 요소 감지하기
들어가며 무한 스크롤이나 등장 애니메이션을 만들 때는 특정 요소가 화면에 들어왔는지 감지해야 합니다. 브라우저에는 Intersection Observer API가 있지만, React에서 더 편하게 쓰고 싶다면 react-intersection-observer 라이브러리를 사용할 수 있습니다. 이번 글에서는 useInView를 사용해 요소 감지와 ...
[Error] styled-components props 경고 해결하기
발생한 문제 styled-components로 컴포넌트를 만들고 props를 전달하다 보면 React 콘솔에 경고가 나타날 수 있습니다. 예를 들어 스타일 계산에만 쓰려고 backgroundColor 같은 prop을 넘겼는데, 이 값이 실제 DOM 요소까지 전달되는 경우입니다. React는 알 수 없는 DOM 속성을 발견하면 경고를 보여줍니다. ...
[React] styled-components에서 props로 theme 값 접근하기
들어가며 버튼 컴포넌트를 만들다 보면 색상, 폰트, 배경색이 조금씩 다른 버튼이 필요해집니다. 이때 매번 새 컴포넌트를 만들기보다 props로 값만 바꿀 수 있으면 재사용성이 좋아집니다. styled-components에서는 props와 theme을 함께 사용해 스타일 값을 동적으로 선택할 수 있습니다. theme 예시 먼저 theme 객...
[JavaScript] 객체 속성 접근법 정리
들어가며 JavaScript 객체는 key와 value로 데이터를 저장합니다. 객체 안의 값을 사용하려면 속성에 접근해야 합니다. 가장 자주 사용하는 방법은 점 표기법과 대괄호 표기법입니다. 점 표기법 점 표기법은 가장 기본적인 객체 속성 접근 방법입니다. const person = { name: "taewok", age: 23,...