728x90
반응형
- [ 언어·프레임워크/React.js ][React.js] 네이버 지도 API 리사이즈 트리거2024-12-17 20:25:051. 지도 영역 크기 변경 후 지도 잘림 현상 문제 발생좌측 aside를 숨기는 기능을 구현하였다. 메인 콘텐츠 영역에는 [그림 1]과 같이 네이버 지도가 렌더링 되어 있다. aside 숨김 버튼을 클릭하면 [그림 2]와 같이 지도 부분이 비정상적으로 잘려서 표시된다. 2. 지도 리사이즈 이벤트 강제 트리거로 문제 해결지도 영역 변경 발생 시 리사이즈 이벤트를 강제 트리거하여 문제를 해결하였다. 강제 트리거 방법은 " naver.maps.Event.trigger()"를 호출하는 것이다. 아래는 적용된 코드 예시이다.useEffect(() => { // naverMap은 useRef()이다. if (naverMap.current) { setTimeout(() => { const { nav..
- [ 언어·프레임워크/React.js ][React.js] 네이버 지도 API 지도 센터 위경도 값 변경 감지 성능 개선2024-12-03 17:38:421. useState로 관리하는 지도 센터 값 성능 문제지도의 센터 위경도 값에 따라 breadcrumb의 표시 정보가 달라지는 기능을 구현하였다. breadcrumb의 정보가 자동으로 변경되려면 센터 위경도 값의 변경을 감지해야 하므로 useState를 사용하였는데 문제는 마우스 좌클릭하여 지도를 이동할 때마다 무수히 많은 센터 위경도 값이 생성되어 그만큼의 리렌더링이 일어난다는 것이다.지도는 "react-naver-maps": "^0.1.2" 라이브러리를 사용했는데 "NaverMap" 컴포넌트에 "onCenterChanged" props로 setState를 넘기면 지도의 중앙 위경도 값을 state로 관리할 수 있다. setMapCenterPoint(latLng)}>(생략)위와 연관된 useState..
- [ 언어·프레임워크/Next.js ][Next.js] shadcn 적용 방법(CRA를 이용한 React.js 또는 Next.js에 적용, vite를 이용한 React.js에 적용)2024-11-09 23:18:11React.js 프로젝트에 shadcn을 적용하고자 하였다. 공식 페이지(https://ui.shadcn.com/docs/cli)에 있는 아래 명령어를 입력하였으나 정상적으로 설치되지 않았다.npx shadcn@latest init다른 여러 방법으로도 시도해 봤지만 결국 적용하지 못했다. 설치 실패 메시지 중 프레임워크를 찾을 수 없다는 내용이 반복되어서 결국 Next.js 프로젝트에 적용해 보게 되었고 너무도 자연스럽게 진행됨을 경험했다.이 글을 쓰고 있는 시점에서 shadcn은 React.js 프로젝트보다는 Next.js 프로젝트(버전 15.0.3)에 적용하는 것이 정신건강에 이롭다고 정리해 본다.1. Next.js 프로젝트에 shadcn 적용Next.js 프로젝트에 shadcn 적용은 아래 공식 ..
- [ 언어·프레임워크/React.js ][React.js] jsPDF를 이용한 웹 화면 PDF 내보내기 중 이슈: 페이지 오버플로우 이미지 잘림 문제2024-07-24 11:06:311. 화면에 렌더링 된 테이블 페이지 오버플로우 문제jsPDF를 이용해 웹 화면을 PDF로 내보내기 기능을 구현했다. 에러 없이 작동하였으나 [그림 1]과 같이 페이지 오버플로우로 그림이 잘린 경우 앞 페이지 하단, 뒷 페이지 상단 여백이 전혀 없는 pdf 파일이 생성되었다. 2. canvas 이용하여 해결페이지 오버플로우가 발생할 경우 이미지를 페이지 크기로 잘라 새로운 캔버스에 그리고 새로운 캔버스를 PDF에 추가하는 방식으로 해결하였다. [그림 2]는 최종 결과물이다. 작성한 전체 코드는 아래와 같다.import jsPDF from 'jspdf';import font from './font/NanumGothic-normal';import { format } from 'date-fns';const P..
- [ 언어·프레임워크/Next.js ][Next.js] [Next.js] 인프런 강의 "Next.js 필수 개발 가이드 3시간 완성!" 정리(Zod를 이용한 유효성 검사)2024-02-13 14:03:591. Zod 설치 Zod는 유효성 검사 라이브러리이다. npm i zod 😉 공식 문서 : https://zod.dev/ 2. 적용 방법 📌 스키마 작성 // src/app/api/users/schema.ts import { z } from "zod"; const schema = z.object({ name: z.string().min(3), email: z.string().email(), age: z.number(), }); export default schema; 📌 Zod 적용 // src/app/api/users/[id]/route.tsx import { NextRequest, NextResponse } from "next/server"; import schema from "../schema"; ..
- [ 언어·프레임워크/Next.js ][Next.js] 동일한 GLTF 모델을 2번 이상 렌더링하기(react-three-fiber/drei/Three.js)2023-12-28 09:45:381. 한 페이지에 하나의 GLTF만 렌더링 되는 문제 페이지에 하나의 GLTF 파일을 이용해 여러 개의 모델을 렌더링 하고자 하였다. 이미지 태그를 이용하는 방식처럼 당연히 가능할 거라 생각했는데 현실은 [그림 2]와 같이 마지막 하나의 구성만 적용되었다. 여러 테스트 중에 GLTF의 복사본의 만들어 이름을 달리하여 로드했더니 원하는 결과를 얻을 수 있었다. 하지만 렌더링 모델의 개수만큼 동일한 내용을 담고 있는 GLTF 파일을 무수히 만들 수는 없는 일이었다. 2. Clone으로 문제 해결 react-three-fiber에서 Clone 컴포넌트를 제공하고 있었다. 이 기능을 이용하여 [그림 2]와 같이 하나의 GLTF를 통해 2개 이상의 모델을 화면에 렌더링 할 수 있었다. 해당 코드는 아래와 같다. ..
- [ 언어·프레임워크/React.js ][React.js] React Three Fiber(R3F) 애니메이션 재생2023-12-12 10:56:121. useEffect 훅에서 play() 메서드 작동 안 됨 3D 모델의 애니메이션을 재생하고자 하였다. 아래의 코드를 적용해 봤는데 애니메이션이 플레이되지 않았다. import React, { useState, useEffect } from "react"; import { GLTFLoader } from "three/addons/loaders/GLTFLoader"; import { useLoader } from "@react-three/fiber"; const Model = ({ characterPath, scale }) => { const gltf = useLoader(GLTFLoader, characterPath); const mixer = new THREE.AnimationMixer(gltf.s..
- [ 언어·프레임워크/Next.js ][Next.js] html2canvas 이미지 잘림 문제2023-12-08 15:26:001. html2canvas 이미지 잘림 문제 html을 이미지 파일로 저장하는 기능을 구현하기 위해 html2canvas 라이브러리를 이용했다. 편리하게 기능을 구현했고 작동했지만 html요소가 화면에 보이는 대로 캡처되지 않았다. 심지어 QR 코드 일부분은 [그림 1]과 같이 잘린 채로 저장되었다. 2. html-to-image 라이브러리로 교체 후 해결 html2canvas로 여러 시도를 해보았지만 효과를 보지 못했다. 그래서 html-to-image로 교체하였고 다행히도 깔끔하게 문제가 해결되었다. html-to-image의 경우 공식 문서의 코드를 그대로 가져와 사용했고 별다른 설정을 하지 않았음에도 화면에 보이는 대로 캡처되었다(그림 2 참조). 😉 html-to-image 공식문서 : http..
728x90
반응형