Develop 26

[React] TypeScript Module Augmentation 정리 (TanStack Table 사례)

TypeScript를 사용하다 보면 라이브러리 타입에 내 프로젝트에서 필요한 속성을 추가하고 싶을 때가 있다.이때 사용하는 기능이 Module Augmentation이다. TypeScript Module Augmentation(모듈 보강)이란 ?TypeScript에서 이미 존재하는 모듈의 타입 정의를 확장하는 기능이다.즉, 새로운 타입을 만드는 것이 아니라 기존 라이브러리의 타입에 추가 속성이나 타입을 merge하는 방식이다. 보통 다음과 같은 상황에서 사용된다.외부 라이브러리 타입에 프로젝트 전용 속성을 추가하고 싶을 때전역 객체(window 등)에 새로운 프로퍼티를 추가해야 할 때라이브러리에서 확장을 의도적으로 열어둔 타입을 확장할 때 Module Augmentation은 declare modul..

Develop/React 2026.03.13

[React] useRef(null)로 시작하는 이유

이전 포스팅에 이어 React의 ref에 대해 좀 더 자세히 알아가보자. React에서 ref를 초기값 null로 두는 이유는 아래와 같다. 1. DOM 노드가 아직 존재하지 않기 때문 (흔함)const inputRef = useRef(null); React에서 useRef는 보통 이렇게 선언한다.컴포넌트가 처음 렌더링되는 시점에는 DOM 요소 생성 전이기 때문에 ref.current가 가리킬 대상이 없다.때문에 초기값을 null로 두는 것은 정상적이며, 렌더링 후 DOM이 연결되면 React 가 자동으로 값을 채운다. 2. React가 마운트/언마운트 상태를 명확히 표현하기 위해 null은 참조 대상이 없음 이라는 명확한 상태값이다. 시점ref.current초기 렌더 전null마운트 후DOM elem..

Develop/React 2026.03.09

[React] ref를 사용하는 이유와 역할

React 개발을 하다 보면 중간중간 ref를 선언하고 사용한다.주 목적과 이유는 아래와 같다. React의 "선언형 방식"으로 해결하기 어려운 순간에 “실제 DOM 객체”를 직접 만지기 위해 여기서 “DOM에 직접 접근한다”는 말이 처음 들으면 좀 추상적인데, 실제로는 브라우저가 만든 HTML 요소 객체를 그대로 가져와서 JS로 조작하는 것을 의미한다. 이런 설명을 봐도 글로 배우는 느낌이라 와닿지 않을것이다. 여기서 말하는 선언형 방식과 DOM 객체 직접 접근을 좀 더 쉽게 비유로 이해해보자! (비유는 비유일뿐 대충 그렇다는 느낌만 가져가세요)React 방식 (선언형) = 식당에서 주문하는 것“파스타 하나 주세요” 손님은 요리 과정에 개입하지 않고 주방(React)이 알아서 함 ref 방식 (직..

Develop/React 2026.03.09

[IntelliJ] Gradle 프로젝트가 인식이 안될때

한 폴더에 모듈 여러개를 넣어 한 번에 Import할 경우 Gradle 파일 인식이 되지 않아 인텔리제이에서 서비스가 뜨지 않거나 Application 인식을 못 하는 경우가 있다. 한 번 받은 프로젝트는 그 이후에 새로운 환경을 세팅해줄 필요가 거의 없다 보니 까먹거나 헷갈려서 Project Structure, 코끼리아이콘, 서비스모듈, Import Module 등을 번갈아가며 찾을때가 생긴다. 이런 경우 Gradle 프로젝트 불러오는 방법을 간단하게 해결할 수 있다. 1. 모듈(폴더) 내에 build.gradle 파일 우클릭 > Link Gradle Project 2. build.gradle 파일 열어서 우클릭 > Link Gradle Project 이렇게 하면 우측에 코끼리가 뿅 하고 생긴다..

Develop/Spring 2026.02.10

[yarn] yarn 버전이 말을 듣지 않을때(yarn set version not working)

[서론]포맷 이후 npm 을 어찌저찌 다시 설정하다보니 yarn 설치할때 yarn set version [버전] 입력하는 것을 깜빡하였고 4.1.0 버전을 원한 나는 4.3.1버전으로 설치가 된다 . .다운로드만 해주고 설치는 안해줌 ㅋ ((가운데 부분은 추후 중요한 역할이 됩니다))[본론]프론트엔더 프로젝트 버전 관리는 크게 두가지가 있습니다.프로젝트 별 버전관리와 전역 버전 관리인데요 오늘 둘 다 해볼 것입니다.  1. 프로젝트 별 버전관리1. 해당 프로젝트 폴더 안에 들어가 yarn set version 4.1.0 을 입력합니다.프로젝트 폴더 안에 ./yarn/release/yarn-4.1.0.cjs 경로에 4.1.0 버전이 설치되었다는 문구가 뜹니다. ➡️ cjs라고 ? 너 누군데 ?더보기yar..

Develop/JavaScript 2024.10.23

[React] yarn으로 husky를 설정해보자(feat. .git경로)

Husky란? Git hook입니다. git과 관련된 액션이 일어날때 husky에 설정한 처리가 수행됩니다. 쉬운 예시로, pre-commit 훅을 사용하면 커밋 전 husky에 사용자가 설정한 액션이 수행됩니다. 공식사이트 : https://typicode.github.io/husky/ 사용 전 주의사항 : husky를 설치하려는 프로젝트의 폴더 경로에 .git이 있어야 합니다. husky는 yarn으로 설치할때와 .git의 위치에 따라 설치 방법이 달라져서 조금 까다롭습니다. 저는 오늘 프로젝트 폴더가 아닌 상위 폴더에 .git이 있는 관계로 설치 과정이 평범하지 않아 이러한 상황에 설치하는 방법을 알려드리려고 합니다 :) 일반적인 구조 내 폴더 구조 ReactApp (Root) ㄴ .git ㄴ ....

Develop/React 2024.03.25

[React] react + vite + typescript + yarn 프로젝트 환경구성

프로젝트를 생성하기 전에, vite에 대해 간단히 설명드릴게요 :) vite란? 대규모 프로젝트에서 javascript 모듈이 증가될 수록 javascript 기반의 도구는 병목현상이 발생됨에 따라 개발의 생산성을 낮추고 변경 파일에 대한 피드백에 영향을 주었으나 vite에서 지원하는 ES Modules(ESM)을 통해 이러한 현상을 해결할 수 있습니다. 자세한 설명은 아래 공식 홈페이지를 참고해주세요. https://ko.vitejs.dev/guide/why.html 버전 node : 20.11.1 (버전 변경 방법 : https://withwltn.tistory.com/31) yarn : yarn berry (4.1.1) react : 18.2.0 typescript : 5.2.2 프로젝트 생성 프로..

Develop/React 2024.03.10

[Vue3] lazy-loading을 활용한 성능개선

lazy-loading이란? 앱의 초기 구동시 모든 컴포넌트의 리소스를 가져오지 않고, 리소스를 컴포넌트 단위로 분리시켜 필요한 것들만 다운로드합니다. 특히 대규모 프로젝트에서 사용하는 컴포넌트가 많아질수록 로드하는 시간이 길어지는데 이를 줄이는데 유용합니다. 사용 방법 router.js에서 component import 하는 부분을 함수로 변경합니다. const routes = [ { path: '/page/home/detail', name: 'DetailPage', meta: { menuAth: 'menu0001' }, component: () => import('../page/home/homeDetail.vue'), //함수화 } ] export default routes 주의점 app.vue 또는..

Develop/Vue 2024.02.07

[Vue.js] Uncaught (in promise) NavigationDuplicated: Avoided redundant navigation to current location: 에러해결

vue를 개발하던 중 이런 에러가 떴다. 검색해보니 해당 오류는 같은 컴포넌트를 한 번 더 호출해서 이미 해당 경로인데 우케 또 일루가냐~~ 라는 에러라고한다. 하지만 가야합니다 원래는 코드는 router-link로 html에서 꽂았는데 여기선 해결방법이 없어보여서 함수로 뺐다. 1. 클릭하는 html 요소에 해당 함수를 박는다. @click="repoCheck(el.name)" @keyup="repoCheck(el.name)" 2. el.name 요소를 전달받은 repoCheck 메소드는 router에 push를 하는 동시에 에러가 나는 것을 catch하여 무시하기로 한다! methods: { repoCheck(rn) { this.$router.push({ name: 'repositoryFile', p..

Develop/Vue 2023.03.02
반응형