전체 글

· Javascript
🍄 옵셔널 체이닝 연산자([?.], optional chaining operator)옵셔널 체이닝 연산자(?.)를 사용하면 프로퍼티가 존재하지 않는 중첩 객체에 에러 없이 안전하게 접근할 수 있습니다.- 출처 사이트먼저 체이닝 연산자(.)는참조하는 값이 nullish한 값(null 또는 undefined)이면 존재하지 않는 값에 접근한다는 이유로 에러가 발생합니다. 이때 옵셔널 체이닝 연산자(?.)를 사용하면참조하는 값이 존재하지 않을 때, 에러가 발생하는 대신 undefined를 리턴합니다.반대로 왼쪽 참조값이 nullish한 값이 아니라면 오른쪽 참조값의 결과를 반환합니다. 예를 들어, 아래와 같은 객체가 있을 때 const user = { name: 'Emma', } // user.cat?..
· Frontend
구글 검색창에 '신입 프론트엔드 개발자 면접 질문'이라고 검색하여 나온 상위 10개의 블로그에서2번 이상 언급된 질문 리스트입니다. 브라우저의 렌더링 원리: 브라우저가 html, css, javascript 등의 자원을 화면에 렌더링 하는 과정SPA(single page application)와 SSG(server side rendering)의 차이점: 각 렌더링 방식의 장단점과 사용이유CSR(client side rendering)과 SSG(server side rendering)의 차이점: 각 렌더링 방식의 장단점과 사용이유리액트의 라이프사이클: 리액트 컴포넌트의 생명주기와 각 단계(mount, update, unmount)에서 수행되는 작업var, let, const의 차이점: 자바스크립트에서 변수..
🌵 모달이란모달이란 현재 열려있는 페이지에 포함된 창으로, 페이지 위에 일종의 '레이어(층)'을 까는 것을 말합니다.현재 페이지를 '부모', 현재 페이지에서 열린 모달을 '자식'으로 생각할 수 있습니다.- 출처 블로그모달에 대한 더 자세한 내용과 모달과 팝업의 차이는 다음 블로그를 참고해주세요. 이번 글에서는 웹 서비스에서 많이 사용되는 모달 구현에 필요한 코드를 정리해보겠습니다. 🌵 전체 코드아래의 코드는 'Modal.tsx'라는 이름의 컴포넌트 파일로,사진에서 초록색 선으로 둘러싸인 부분과 같이 내용을 제외한 모달의 기본 틀을 제공합니다.import { ComponentPropsWithoutRef } from 'react';import closeIcon from '@icons/close_icon...
개발을 하다 보면 일반적인 세로 방향 스크롤이 아닌 아래의 그림처럼 가로 방향으로 넘어가는 스크롤이 필요한 경우가 있습니다.따라서 이번 글에서 가로 스크롤에 필요한 코드를 정리해보겠습니다. 🐝 전체 코드아래의 코드는 'useHorizontalScroll.ts'라는 이름의 커스텀 훅으로, 원하는 요소에 가로 스크롤을 적용합니다.import { useRef, useEffect, useCallback } from 'react';export const useHorizontalScroll = () => { const listWrapperRef = useRef(null); const handleWheel = useCallback((e: WheelEvent) => { const container = lis..
· HTML & CSS
🍎 설치하기1) 터미널에서 아래의 명령어를 입력하여 'tailwind-scrollbar-hide'라는 이름의 플러그인을 설치합니다.# npm 사용 시npm install tailwind-scrollbar-hide# yarn 사용 시yarn add tailwind-scrollbar-hide 2) 설치한 플러그인의 이름을 'tailwind.config.js' 파일의 플러그인 목록에 추가해줍니다.// tailwind.config.jsmodule.exports = { content: [], theme: { extend: {}, }, plugins: [ require('tailwind-scrollbar-hide') //  🍎 사용하기'scrollbar-hide' 클래스명은 테일윈드가 기본으로..
🖼️ 문제 상황React와 Next.js, 그리고 Typescript을 기반으로 한 프로젝트입니다.마이 페이지의 프로필 편집 기능에서 서버에 patch 요청을 보낼 때, body에 소개글을 제외한 프로필 이미지와 닉네임 값이 필수로 들어가야 했습니다.그리고 api는 이미지 파일을 미리 서버에 업로드하여 url을 응답으로 받고, 해당 url을 닉네임 및 소개글과 함께 담아 최종적인 프로필 편집 patch 요청을 보내는 방식이었습니다.사용자가 프로필 사진을 따로 지정하지 않은 경우도 있기 때문에 이미지 파일이 선택되지 않았다면 로컬에서 임포트 해 온 'defaultProfileImage'를 담아 요청을 보낼 계획이었습니다. 그러나 생각했던 것보다 다양한 이미지의 타입으로 인해 타입 오류가 발생하였습니다.로..
emmaOH!
개발자구역