분류 전체보기
-
[tailwind] tailwind-merge를 사용하여 class 충돌 피하기HTML & CSS 2024. 5. 13. 21:28
리액트에서 tailwindCSS를 사용하면서 컴포넌트의 스타일을 일부만 변경하려 할 때종종 class가 중복돼서 예상하지 않은 스타일로 적용될 때가 있습니다. 이럴 때 중복을 피하기 위해 유용하게 사용할 수 있는 tailwind-merge라는 유용한 라이브러리가 있습니다.| twMergetwMerge를 사용하여 중복되는 class를 제거하고 새로운 스타일을 적용해 줄 수 있습니다. 먼저 예시로 props로 변경하고자 하는 스타일을 받아 적용하는 컴포넌트 하나를 만들어 보겠습니다.interface Props { className: string;}const Input = ({ className }: Props) => { const inputStyle = `border rounded px-2 py-1 $..
-
[Next.js, React(vite.js)] 로컬 개발 환경 https 적용하기React 2024. 5. 2. 15:46
보통 웹 개발을 진행할 때 로컬 환경에서의 개발 주소는대부분 http://localhost 이런 식으로 되어 있는 경우가 많습니다. 일반적으로 개발을 진행할 때에는 문제가 되지 않지만 쿠키를 사용하는 경우secure 속성으로 인해 http에서 쿠키를 사용하지 못하는 경우가 있습니다. 이럴 경우 로컬 개발 환경에 https를 적용하여 개발을 진행할 수 있습니다.| mkcerthttps를 적용하기 위해서는 TLS/SSL 인증서가 필요합니다.mkcert는 자체 서명된 인증서를 만들어 주고,이를 신뢰할 수 있도록 로컬 CA(인증 기관)를 설치하고 관리합니다.따라서 개발 중 보안 경고 없이 https를 사용할 수 있도록 합니다. 먼저 mkcert를 설치해 줍니다.리눅스brew install mkcert윈도우cho..
-
[React] next.js ssr api요청에 쿠키 포함해서 보내기React 2024. 4. 19. 16:43
홈페이지에서 사용자 인증에 대한 jwt 토큰을 쿠키에 저장하고, api요청 시 해당 쿠키가 같이 전송되며 사용자 인증을 처리하는 경우가 있습니다. Next.js를 사용하여 서버 사이드 렌더링을 통해 API요청으로 데이터를 받아올 때 쿠키가 포함이 안 돼서 데이터를 받아오지 못하는 경우가 있습니다. 이때 Next.js에서 제공하는 cookies 함수를 사용하여 쿠키를 직접 포함시켜 보낼 수 있습니다. | cookies cookies함수는 next.js 13부터 제공되는 함수로 서버 컴포넌트에서 쿠키를 읽고 쓸 수 있도록 해주는 함수입니다. get() 메서드 cookie함수의 get(name) 메서드로 쿠키의 이름을 사용해 쿠키의 이름과 값을 포함하는 객체를 반환할 수 있습니다. 만약 이름이 포함된 쿠키가 ..
-
Vite.config에 환경변수 넣기React 2024. 4. 15. 11:16
보통 vite를 사용하여 리액트 프로젝트를 할 때 환경변수를 import.meta.env.VITE_DEVELOP 이런 식으로 불러와서 사용할 수 있습니다. 하지만 이런 식으로 불러오는 것은 기본적으로 클라이언트에서 사용되는 거라 서버에서 불러와지지 않습니다. 따라서 process.env를 통하여 가져와야 하는데 그냥 사용하면 환경변수가 적용이 안되게 됩니다. https://vitejs.dev/config/#using-environment-variables-in-config vite.js 공식문서에 따르면 vite는 설정을 마친 뒤 어떻게 파일을 불러올 것인지 알 수 있기 때문에, 기본적으로 .env파일을 로드하지 않는다고 합니다. 따라서 필요시 loadEnv 헬퍼를 사용해 .env 파일을 불러온 후 사용..
-
웹사이트의 접근성을 생각하자HTML & CSS 2024. 4. 9. 14:23
웹 접근성의 중요성을 이론적으로는 알고 있었지만, 실제로는 이를 잘 고려하지 못하고 코드를 작성하는 경우가 많았습니다. 제가 개발자가 되려 하는 이유 중 하나가 사람들에게 편의를 제공하는 것임에도 이를 고려하지 못하는 건 맞지 않다 생각하여 이번 기회에 이를 공부해 보고, 웹 접근성을 높이기 위해 어떤 것들을 할 수 있는지 알아보고자 합니다. | 웹 접근성이란 웹 접근성은 장애인뿐만 아니라 모든 사용자가 웹에서 제공하는 콘텐츠에 동등하게 접근할 수 있도록 웹사이트를 디자인하고 개발하는 것을 의미합니다. 이는 디자인과 개발 과정의 모든 단계에서 고려되어야 하는 아주 중요한 요소입니다. | 키보드 접근성 마우스를 사용하지 못하는 경우를 대비하여 키보드만으로 웹사이트 내의 요소에 접근할 수 있도록 하는 것이 ..
-
[React] createPortal 사용 이유 (모달창)React 2024. 4. 4. 20:20
리액트로 코드를 작성하면서 모달창을 만드는 경우가 많습니다. 언듯 보면 간단해 보이지만, 실제로는 예상하지 못한 복잡성을 내포하고 있습니다. 최근 저는 모달창을 구현하면서 z-index 관련 문제가 발생하였고, 이를 해결하기 위해 createPortal을 이용한 내용을 작성해보고자 합니다. | 문제 상황 문제 상황을 보기 위해 리액트 프로젝트를 만들고 간단한 모달창 하나를 만들어 보겠습니다. 먼저 props로 상태를 받아서 화면에 보여주고 닫을 수 있는 Modal 컴포넌트 하나를 만들어 주겠습니다. // Modal import styles from "./index.module.css"; type Props = { open: boolean; onClose: VoidFunction; }; const Moda..
-
[Javascript] 이미지 리사이징으로 용량 줄이기 (Canvas API)Java Script 2024. 3. 27. 13:43
최근에 대한민국 철봉 지도라는 프로젝트를 진행하면서 사용자가 지도에 철봉 위치를 등록하면서 주변 사진을 이미지로 업로드하고, 업로드한 이미지를 다른 사용자들이 확인할 수 있는 기능을 구현하였습니다. 이때 저희 서비스 특성상 고화질 이미지를 제공할 필요성이 크지 않고, 거리뷰를 통해 확인할 수 있는 기능을 제공함으로써 서버의 부담을 줄이고, 로딩 속도를 올리기 위해 이미지를 리사이징 하여 용량을 줄이기로 결정하였습니다. | react-image-file-resizer 먼저 이미지를 리사이징 react-image-file-resizer라는 라이브러리를 활용해 보기로 했습니다. https://www.npmjs.com/package/react-image-file-resizer react-image-file-re..
-
[TanStack Query] Optimistic Update(낙관적 업데이트)로 사용자 경험 개선하기React 2024. 3. 11. 19:29
최근에 프론트엔드 사용자 경험 개선에 관해 공부를 하다가 낙관적 업데이트라는 개념을 알게 되었습니다. 이왕 공부해 본 김에 프로젝트에 한번 적용해 보면 좋을 거 같아서 TanStack Query를 사용하여 적용해보고자 합니다.| Optimistic Update(낙관적 업데이트)낙관적 업데이트는 프론트엔드 개발에서 사용되는 데이터 동기화 전략입니다.사용자가 데이터를 수정하거나 추가할 때 서버로부터 오는 응답을 기다리지 않고,UI를 즉시 업데이트 하는 방식입니다. 낙관적 업데이는 사용자가 서버의 응답을 기다리지 않고 지연 없이 즉시 피드백받게 되므로,사용자 경험 개선에 큰 도움이 될 수 있습니다. 다만 오류가 발생했을 때 이를 적절히 처리하고 원상 복구 시키는 로직을 잘 작성해야 하고,금전적인 정보, 사용자..