react(11)
-
HotReload이슈❗️ Cannot update a component (HotReload) while rendering a different component (Unknown).To locate the bad setState() call inside Unknown, follow the stack trace as described in https://reactjs.org/link/setstate-in-render Error Component Stack
시간에 쫒겨 개발 중 HotReload 에러를 마주했다.해석을 해보니 무언가 컴포넌트가 렌더링 중에 상태를 업데이트 할 수 없다. 라는 말이다.const TodoList = ({ data, isDashboard }: TodoListProps) => { // queries => todos const {todos} = useQueries({ queries: data?.content ? data?.content.map((id: string) => ({ queryKey: QUERY_KEY.TODO(id), queryFn: getTodo, })) : [], combine: (results) => { return: { ..
2024.12.31 -
리액트로 마우스 드래그 가로 스크롤 구현하기 (+합성 컴포넌트로 재사용 높이기)
모바일 브라우저에서는 터치 스크린을 기반으로 하기 때문에 scroll이 있을때 드래그를 하면 자연스럽게 스크롤이 된다. 하지만 데스크탑의 경우에는 마우스를 기반이라 마우스로 드래그를 하면 일반 요소를 드래그 하는걸로 인식이 된다. 드래그 했을때 스크롤이 되지 않기 때문에 직접 드래그 이벤트를 걸어줘야 한다.이번에 리스트에 가로스크롤을 구현하게 되었는데 모바일&데스크탑에서도 구현이 가능해야 했으므로 직접 드래그 이벤트를 구현해 적용했다. Drag and Drop API 사용하기HTML요소를 드래그 앤 드롭 하게 해줄 수 있는 기능이다.나는 총 5가지의 기능을 사용했다.1. draggable : 드래그 대상에 true값을 설정해주면 해당 요소가 드래그 된다.2. dragstart : 드래그가 시작될때 발생...
2024.09.19 -
리액트로 리뷰 별점(Rating) 구현하기(소수점,클릭했을때)
이번에 리액트로 별점(Rating) 기능을 구현해 보았다. ✅ 요구사항1. 별 5개중에서 아무 순서를 클릭 했을때 별점이 그 순서만큼 채워져야함. 5개의 별점중 3번째 별 클릭시 별점 3점이 된다.2. 별점이 소수점일시(4.8 등) 별이 소수점에 맞게 채워져야함. 요구사항 1번 부터import { useState } from 'react';import { FaStar } from 'react-icons/fa6';interface IStarProps { w: string; h: string; readonly: boolean; rate?: number;}export default function Star({ w, h, readonly, rate }: IStarProps) { co..
2024.07.26 -
useState는 비동기적으로 동작한다!
useState(setState)를 사용할때 그런경우가 있다. 바로 엇,,왜 내가 생각한대로 동작이 안되지,,?그 이유는 바로 비동기적으로 동작하기 때문이었다.useState가 비동기적으로 동작하는 이유에 대해서 알아보려고 한다. 원인을 알아보기function App() { const [number, setNumber] = useState(1); const handleAdd = () => { setNumber(number + 1); }; const handleMultiply = () => { setNumber(number * 2); }; const handleMultiplyAddNumber = () => { setNumber(number * 2); setNumber(number + 1);..
2024.04.30 -
framer-motion으로 리액트에서 애니메이션을 쉽게 ✨
최근에 리액트로 포트폴리오를 구축했는데 애니메이션을 빠르고 쉽게 적용하고 싶었다. framer-motion이 내가 찾던 라이브러리 였다. (왜 이제 안걸까;;? ㅎ) https://www.npmjs.com/package/framer-motion framer-motion A simple and powerful JavaScript animation library. Latest version: 11.1.5, last published: 16 hours ago. Start using framer-motion in your project by running `npm i framer-motion`. There are 4191 other projects in the npm registry using framer-mo..
2024.04.19 -
useTransition으로 성능 개선하기
⭐️useTransition 이란⭐️ 상태 변경의 우선순위를 낮춰 다른 렌더링이 더 빠르게 수행되도록 해줄 수 있는 hook 이다. (리액트 18에 생김) 왜?? 이것을 사용해야 할까? 리액트는 기존에 동기적으로 처리 되고 있었다. 즉 하나의 작업에 하나만 처리가 된다는 것인데 리액트가 렌더링이 끝날때까지 순차적으로 계속 지연이 된다는 것이다. useTransition 훅을 통해 동시성을 실현할 수 있다. 동시성을 실현하게 되면 A와 B의 작업을 처리하고 있을시 B를 지연시키고 A를 처리할 수 있다. 코드로 구현해보기 function App() { const data = ['사과','배','오렌지','바나나','딸기','천례향','귤','자몽','수박','키위','아보카도','참외'] const allD..
2024.02.28