성능이 중요한 애플리케이션을 개발할 때, 특히 부드러운 애니메이션과 복잡한 제스처 (줌인 줌아웃, 스크롤 등) 를 다룰 때는 적절한 상태 관리 방법을 선택하는 것이 중요합니다. React Native Reanimated에서 제공하는 강력한 훅인 useSharedValue는 애니메이션, 제스처, 그리고 자주 업데이트되는 UI를 최적화하는 데 중요한 역할을 합니다.useSharedValue란 무엇인가요?useSharedValue는 React Native Reanimated v2에서 제공하는 훅으로, 공유 가능하고 변경 가능한 값을 생성할 수 있습니다. 이 값은 애플리케이션 내 여러 컴포넌트나 애니메이션에서 접근하고 업데이트할 수 있습니다. useSharedValue의 특징은 자바스크립트 스레드가 아니라 네이..
Firestore에서 여러 개의 쓰기 작업을 한 번에 실행하고자 할 때 사용하는 방법이 writeBatch입니다.writeBatch를 사용하면 여러 set(), update(), delete() 작업을 하나로 묶어서 모두 성공하거나 모두 실패하도록 보장할 수 있습니다. 즉, 원자성(atomicity)을 보장합니다.writeBatch란?writeBatch는 Firestore에서 여러 개의 쓰기 작업을 원자적으로 한번에 수행할 수 있게 해주는 객체입니다. 이를 사용하면 다음과 같은 특징이 있습니다:커밋 전까지 아무 작업도 이루어지지 않습니다. batch.commit()을 호출할 때까지 데이터는 로컬에서 보이지 않으며, Firestore에 반영되지도 않습니다.모든 작업이 성공하거나 실패합니다. 하나라도 실패하..
Firebase Firestore를 사용할 때 데이터를 불러오는 방법은 크게 두 가지가 있습니다.바로 get()과 onSnapshot()입니다.둘 다 데이터를 “가져오는” 역할을 하지만, 언제와 어떻게 데이터를 가져오는지가 완전히 다릅니다.이번 글에서는 get()과 onSnapshot()의 차이를 이해하고, 어떤 상황에서 각각을 사용해야 하는지 알아보겠습니다. 1. get() — 한 번만 가져오기get()은 Firestore에서 현재 시점의 데이터를 한 번만 가져오는 메서드입니다.import { getDocs, collection } from "firebase/firestore";import { db } from "@/firebaseConfig";const fetchUsers = async () => {..
TypeScript로 코드를 작성하다 보면 아래와 같은 상황을 마주칠 수 있습니다.const args = [8, 5];// ❌ 에러: 2개의 인수가 필요한데, 0개 이상을 가져왔습니다.// Error: Expected 2 arguments, but got 0 or more.const angle = Math.atan2(...args);분명 args 배열에는 두 개의 숫자가 들어있는데, 왜 TypeScript는 Math.atan2 함수에 인수가 정확히 두 개 전달될 것이라고 확신하지 못하고 오류를 발생시킬까요? 하지만 아래처럼 as const를 추가하면 오류가 사라집니다.const args = [8, 5] as const;// ✅ 정상 작동const angle = Math.atan2(...args);이 차이..
- Total
- Today
- Yesterday
- useMemo
- DP
- 동일한 문구
- boj
- react native
- 같은 내용
- typecript
- C++
- as const
- reanimated
- codespace
- 개발
- 브루트포스 알고리즘
- DFS
- expo cli
- 알고리즘
- 정수록
- writebatch
- 프로그래밍
- Firebase
- 일괄삽입
- 다이나믹 프로그래밍
- 중국인의 나머지 정리
- 백준
- BFS
- onSnapshot
- 메모리 초과
- 코딩
- 브랜트포트 알고리즘
- typescript
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 | 30 |
