[ReactFlow] 이제 reactflow 대신 @xyflow/react
·
Development/React
기존 프로젝트에서 reactflow를 사용하고 있었는데, xyflow에 대한 마이그레이션 글을 보고 정리하는 글입니다.https://reactflow.dev/learn/troubleshooting/migrate-to-v12 Migrate to React Flow 12 - React FlowUse this guide to migrate from React Flow 11 to 12.reactflow.dev 패키지명 변경 및 모노레포 통합• 기존 reactflow 패키지가 이제는 `@xyflow/react`로 완전히 대체되었습니다. 더 이상 기본(`default`) 방식이 아닌 네임드(`named`) import 형태로 사용해야 합니다.예:// 이전import ReactFlow from 'reactflow';..
[React] ReactQuery 순환 참조
·
Development/React
JavaScript 객체 초기화 순서와 const 객체 참조 구조 때문에 생기는 “실행 시점 의존성” 문제객체 리터럴 내부에서 자기 자신 참조는 시점상 정의 전 참조가 된다. export const pageMngQueryKeys = { all: ['pageMng'] as const, detail: (id: number) => [...pageMngQueryKeys.all, 'detail', id] as const,};여기서 pageMngQueryKeys.detail은 객체 초기화가 아직 끝나지 않은 시점에 pageMngQueryKeys.all을 참조 즉, pageMngQueryKeys는 아직 완전히 만들어지지 않았는데 그걸 내부에서 쓰고 있음 → undefined.all → 런타임 에러 왜 로컬환..
[React] React에서 key 중복으로 발생한 렌더링 이슈 (Reconciliation 사례)
·
Development/React
한가로이 기존에 개발한 기능을 테스트하다가 찾은 이슈 기록 올 초에 리팩토링한 칸반 보드를 테스트하다가 보니 API로 받은 데이터는 분명 1건인데, 화면엔 같은 태스크가 2번씩 표시되는 이상한 현상을 겪었다. (벌써 v3.. 그 이유는 더보기에서)더보기1. 최초 기능 개발2. 라이브러리 교체 (beautiful-dnd -> dnd-kit)3. 디자인 전환작업으로 인한 리팩토링 이번에 전체 검색 기능을 넣으면서, 검색 기능을 전반적으로 테스트하다가 발견했다.처음에는 계층 구조 때문에 백엔드에서 중복 데이터를 잘못 가져오는 줄 알았지만 실제로는 렌더링 로직의 문제였다. API 응답 자체에는 이상이 없었으며, 실제 원인은 React 내부의 reconciliation 알고리즘과 컴포넌트에 할당한 key 사용 방..
[React] useId()를 사용하다가 삽질한 기록
·
Development/React
React.useId()란?React.useId()는 React 18에 도입된 훅으로, 컴포넌트 렌더링마다 고유한 ID 문자열을 생성해 주는 기능을 제공한다.HTML의 id, htmlFor 속성 같이 접근성과 연관된 DOM 요소를 연결할 때 유용SSR(Server Side Rendering) 시에도 클라이언트와 일관된 ID 보장주로, HTML의 id, htmlFor 속성처럼 접근성과 관련된 DOM 요소를 연결할 때 사용되며, SSR(server Side Rendering) 환경에서 클라이언트와 서버 간 ID 일치(hydration-safe)를 보장한다.또한 React 내부적으로 렌더 트리 순서를 기준으로 ID를 생성하기 때문에, 렌더링 간에 ID 충돌 없이 고유한 값을 갖는다.하지만 리액트 내부에서 ke..
[JS] Emotion (CSS-in-JS)
·
Development/JavaScript
Emotion이란? Emotion은 JS로 css 스타일을 작성하도록 설계된 라이브러리다. Emotion은 프레임워크에 구애 받지 않고 사용이 가능하며, React에서도 사용 가능하다. @emotion/styled 패키지 https://www.npmjs.com/package/@emotion/styled `@emotion/styled` 패키지는 style을 가진 Component를 만들고 싶을 때 사용한다.
[ReactJS] ReactJS란?
·
Development
신기술을 배울 때 중요한 것은 누가 이 기술을 사용하는지 그들의 규모가 얼마나 큰지 꼭 살펴봐야한다. 관련 사이트 builtwith: https://builtwith.com npm: https://www.npmjs.com ReactJS 페이스북(현재 meta) 에서 제작하였다. 가장 큰 커뮤니티를 가지고 있다. React JS는 UI를 interactive하게 만든다. JSX는 JavaScript를 확장한 문법이다. HTMl과 유사해서 JSX로 React 요소를 만드는 게 개발자 입장에서 편하다. React Native React Native: ios나 안드로이드 어플을 React JS 코드로 만들 수 있게 해준다. babel 이란? https://babeljs.io/ babel: JSX 코드를 브라우..
[React] 상태 (State)
·
Development/React
상태란? 리액트(React)에서 state는 컴포넌트의 현재 상태를 나타내며, 사용자 상호작용이나 다른 이벤트에 의해 데이터가 변할 때 UI를 갱신하는 데 사용된다. state는 컴포넌트 내에서 캡슐화되어 있으며, React의 useState 훅을 사용해 관리된다. Counter.tsx import {useState} from 'react'; const Counter = () => { const [count, setCount] = useState(0); const onIncrease = () => { setCount(count + 1); } const onDecrease = () => { setCount(count - 1); } return ( // 0에서 출발, 1씩 증가 / 1씩 감소 {count} ..
[React] JSX 사용하기
·
Development/React
가 아닌 로 사용하는 것을 셀프 클로징 태그라고 한다. ES Module이란 무엇인가? ES6에 도입된 모듈 시스템. import, export를 사용해 분리된 자바스크립트 파일끼리 서로 접근할 수 있다. CSS 파일을 사용하여 스타일링하기 MyHeader.tsx 내보내기(export) const MyHeader = () => { // 컴포넌트 내에 return 필요 return 헤더; }; export default MyHeader; App.css .App, h2, #bold_text 추가 .App { background-color: black; } h2{ color: red; } #bold_text { color: green; } App.tsx React에서는 html 태그에서 class 속성..