Taewok
취소

[JavaScript] Optional Chaining과 Nullish Coalescing

들어가며 프론트엔드에서 API 데이터를 다루다 보면 아직 값이 없거나, 특정 필드가 내려오지 않는 상황을 자주 만납니다. 이때 안전하게 값을 읽기 위해 사용하는 문법이 Optional Chaining ?.입니다. 그리고 기본값을 넣을 때 자주 사용하는 문법이 Nullish Coalescing ??입니다. 두 문법을 함께 사용하면 방어 코드를 훨...

[JavaScript] 호이스팅 이해하기

호이스팅이란? 호이스팅은 JavaScript가 코드를 실행하기 전에 선언을 먼저 인식하는 동작을 말합니다. 말 그대로 코드가 실제로 위로 이동하는 것은 아니지만, 실행 컨텍스트가 만들어지는 과정에서 선언 정보가 먼저 준비됩니다. 그래서 어떤 코드는 선언보다 앞에서 사용해도 동작하고, 어떤 코드는 에러가 발생합니다. var의 호이스팅 var...

[JavaScript] async와 await 기본 사용법

async와 await가 필요한 이유 JavaScript에서는 API 요청, 타이머, 파일 처리처럼 시간이 걸리는 작업을 비동기로 처리합니다. 예전에는 Promise의 then을 이어 붙여서 처리하는 경우가 많았습니다. fetchUser() .then((user) => fetchPosts(user.id)) .then((posts) =...

[Error] value prop without onChange handler 경고 해결하기

발생한 경고 React에서 input을 만들다가 다음 경고를 만날 때가 있습니다. You provided a `value` prop to a form field without an `onChange` handler. 이 경고는 input에 value는 넣었는데, 값을 변경할 수 있는 onChange가 없을 때 발생합니다. 문제가 된 코드 ...

[Error] TypeScript에서 is not a function 해결하기

발생한 에러 부모 컴포넌트에서 만든 state와 setState 함수를 자식 컴포넌트로 넘기는 과정에서 다음과 같은 에러가 발생했습니다. setCount is not a function 값은 잘 넘어오는 것처럼 보이는데, setCount()를 호출하는 순간 함수가 아니라는 에러가 난 상황입니다. 문제가 된 코드 처음에는 자식 컴포넌트를 ...

[Error] Cannot destructure property 'data' of undefined 해결하기

발생한 에러 API 요청을 처리하던 중 다음과 같은 에러를 만났습니다. Cannot destructure property 'data' of '(intermediate value)' as it is undefined. 보통 이런 코드를 작성했을 때 발생할 수 있습니다. const { data } = await api.get("/users/me"...

[Error] No QueryClient set, use QueryClientProvider to set one 해결하기

발생한 에러 React Query를 사용하던 중 다음 에러가 발생했습니다. No QueryClient set, use QueryClientProvider to set one 이 에러는 React Query 훅이 사용할 QueryClient를 찾지 못할 때 발생합니다. 대표적으로 useQuery, useMutation을 사용하는 컴포넌트가 Qu...

[JavaScript] axios interceptors 사용하기

interceptors란? axios interceptors는 요청이 서버로 나가기 전이나, 응답이 then/catch로 전달되기 전에 중간에서 가로채 처리할 수 있는 기능입니다. 쉽게 말하면 API 요청과 응답의 공통 처리 지점을 만드는 기능입니다. 예를 들어 모든 요청에 Authorization 헤더를 붙이거나, 401 에러가 발생했을 때 로...

[JWT] Access Token과 Refresh Token 로그인 흐름 이해하기

들어가며 JWT를 처음 사용하면 로그인 후 토큰을 저장하고 API 요청에 붙이는 흐름은 금방 이해할 수 있습니다. 하지만 실제 서비스에 적용하려고 하면 곧바로 이런 질문을 만나게 됩니다. Access Token이 만료되면 어떻게 해야 할까요? 사용자가 계속 로그인 상태를 유지하게 하려면 어떻게 해야 할까요? 이 문제를 해결하기 위해 보통 Ac...

[React] jwt-decode로 JWT Payload 읽기

들어가며 로그인 후 서버에서 access token을 받으면, 그 안에 사용자 id나 권한 같은 기본 정보가 들어 있는 경우가 있습니다. 이 정보를 화면에 바로 보여주고 싶을 때 매번 사용자 정보 API를 다시 호출하는 대신, JWT의 payload를 읽어 활용할 수 있습니다. React에서는 jwt-decode 라이브러리를 사용하면 JWT pa...