오리너리의 개발 일지
close
프로필 사진

오리너리의 개발 일지

github: @orinery

  • 분류 전체보기 (13)
    • Study (13)
      • HTML (1)
      • CSS (2)
      • REACT (2)
      • JAVASCRIPT (1)
      • GIT & GITHUB (1)
      • PROJECTS (6)
    • Daily (0)
  • 홈
[댕누비/React] Firestore 인증 상태 유지 +  사용자 문서 생성 하는 법

[댕누비/React] Firestore 인증 상태 유지 + 사용자 문서 생성 하는 법

firebase+react로 웹 서비스를 만들며, 로그인은 분명히 됐는데 사용자의 정보가 UI에 반영되지 않거나, 새로고침을 하면 로그아웃된 것처럼 보이는 문제가 발생했습니다. 이 문제는 사용자에게 직접적인 불편을 주는 치명적인 UX 문제라는 점! 이번 글에서는 이 문제의 원인과 실제로 어떻게 해결했는지를 정리해보려 합니다.문제 상황`user?.nickname` 등 속성이 `undefined` 상태새로고침하면 로그인 정보가 사라지고 다시 로그인하라고 나옴Google 로그인은 되지만, Firestore에 사용자 문서가 없음해결 방법 1. 인증 유지 설정Firebase는 기본적으로 세션 기반 인증을 사용합니다.따라서 새로고침 후 로그인 정보가 날아가지 않도록, 지속성 설정이 필요합니다.await setPer..

  • format_list_bulleted PROJECTS
  • · 2025. 5. 21.
[댕누비/React] 공공 API 요청 한도 초과 대응

[댕누비/React] 공공 API 요청 한도 초과 대응

React/typescript + Firebase 기반으로 반려동물과 함께할 수 있는 국내 여행지를 소개하는 웹사이트 댕누비를 개발하며 겪었던 많은 오류들중에서도 제일 골치가 아팠던건 API 요청 초과 문제. 개발을 하면서도 계속 새로 호출하니 하다보면 요청량을 초과해서 결국 개발 중에도 페이지가 먹통이 되는 상황까지 벌어졌습니다...ㅠㅠ 어쨌든 이번 글에서는 그 문제를 어떻게 해결했는지, 그리고 캐싱 구조를 어떻게 설계했는지를 기록해보려고 합니다! 문제 상황지역별 페이지, 테마 페이지에서 매번 API 요청지역변경, 테마변경과 같은 페이지 전환, 새로고침 등등에서도 동일한 API 호출을 반복→ 결국 일일 1000건 제한 초과로 LIMITED_NUMBER_OF_SERVICE_REQUESTS_EXCEEDS_..

  • format_list_bulleted PROJECTS
  • · 2025. 5. 8.
[댕누비/React] API 인증 오류, 인코딩 문제 해결

[댕누비/React] API 인증 오류, 인코딩 문제 해결

이번에 새로 '반려동물 동반 관광 사이트' 프로젝트를 작업중인데, 하면서 겪었던 오류들을 적어보고자한다. api 연결이 익숙하지도 않지만 진짜 생각치도 못한 원인을 찾은 김에 ㅠㅠ..!!!ㅋㅋㅋㅋㅋ오류 상황: 인증키가 맞는데 계속 인증이 실패하는 문제.env에 VITE_TOUR_API_KEY= (키번호)%2F(키번호) 이렇게 키를 잘 넣었음!!!console.log(import.meta.env.VITE_TOUR_API_KEY) 하면 정상 출력됨그런데 최종 요청 URL을 찍어보니:...ServiceKey=(키번호)%252F(키번호)...=> 알고보니 %2F → %252F 로 이중 인코딩 상태가 발생인코딩에 대한 이해도도 부족한 지라 정말 '이거 왜이래???' 라는 생각만 들던 차에 이중 인코딩의 문제라는 ..

  • format_list_bulleted PROJECTS
  • · 2025. 4. 26.
[감정일기장/ React] 웹 스토리지 이용과 배포 방법

[감정일기장/ React] 웹 스토리지 이용과 배포 방법

최근에 만든 React 기반 일기장을 웹 스토리지를 이용해 데이터에 브라우저에 저장하고, Vercel에 배포하기까지의 과정을 공유하려고 해요. (웹 스토리지를 이용하면 서버 없이도 사용자가 작성한 일기를 브라우저에 안전하게 저장하고 불러올 수 있음!) 1. localStorage로 일기 저장하기 서버를 따로 두지 않고 데이터를 저장하려면 웹 스토리지(localStorage) 를 사용하는 게 간단하고 편리해요.localStorage는 브라우저에 key-value 형식으로 데이터를 저장할 수 있는 저장소입니다.localStorage 기본 사용법// 저장하기localStorage.setItem("key", "value");// 불러오기const data = localStorage.getItem("key");..

  • format_list_bulleted PROJECTS
  • · 2025. 4. 15.
[투두리스트/ React] React Hook을 이용한 렌더링 최적화

[투두리스트/ React] React Hook을 이용한 렌더링 최적화

기존에 만들었었던 투두리스트에 추가적인 react hook들을 배우며 렌더링 최적화를 겸해 공부할겸 코드를 정리했다. (큰 프로젝트는 아니지만 프로젝트가 커질 수록 중요한 부분이라 연습겸...!!)1. useCallback, useReducer, React.memo 활용  기존 코드 (useState 사용)기존에는 useState를 사용하여 상태를 관리했으며, 상태가 변화할 때마다 컴포넌트가 불필요하게 리렌더링되는 문제가 있었습니다. 특히, 자식 컴포넌트들에 props를 전달할 때마다 함수가 새로 생성되어 렌더링 최적화가 어려운 상황이었습니다.변경된 코드 (useReducer, useCallback, React.memo 사용)이제 useReducer로 상태를 관리하고, 상태에 따라 다른 처리를 switc..

  • format_list_bulleted PROJECTS
  • · 2025. 3. 25.
[REACT] useMemo와 React.memo의 차이점

[REACT] useMemo와 React.memo의 차이점

리액트 훅을 배우다보면 자연스럽게 알게되는 useMemo와 React.memo는 같은 'memo'라는 단어를 사용하는데다 최적화를 위해 사용하는 것이라, 괜히 헷갈렸던 차에 스스로 정리차 올려보는 글.useMemo와 React.memo는 둘 다 불필요한 연산과 리렌더링을 방지하는 최적화 기법이지만, 적용 대상과 방식이 다르다! 오늘은 두 개를 구분하여 적고 설명해보고자 한다.1. useMemo → 값 (연산 결과)를 캐싱" 이 연산, 다시 계산할 필요 있어? "특정 연산(예: 배열 필터링, 정렬, 무거운 계산)의 결과값을 메모이제이션해서, 불필요한 연산을 방지하는 역할.의존성 배열의 값이 바뀌지 않으면 이전 값을 재사용.useMemo의 종류는 'hook'사용 예시 import { useState, use..

  • format_list_bulleted REACT
  • · 2025. 3. 25.
  • navigate_before
  • 1
  • 2
  • 3
  • navigate_next
공지사항
전체 카테고리
  • 분류 전체보기 (13)
    • Study (13)
      • HTML (1)
      • CSS (2)
      • REACT (2)
      • JAVASCRIPT (1)
      • GIT & GITHUB (1)
      • PROJECTS (6)
    • Daily (0)
인기 글
전체 방문자
오늘
어제
Copyright © 오리너리 모든 권리 보유.
SKIN: Copyright © 쭈미로운 생활 All rights reserved. Designed by JJuum.
and Current skin "dev-roo" is modified by Jin.

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.