일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Stack
- 자료구조
- FigJam
- EC2
- 해시
- useCallback
- docker
- FIGMA
- axios
- 코딩테스트
- react
- grid
- 피그마
- useMemo
- CSS
- Taillwind
- TAILWIND
- Next.js
- render
- 프로그래머스
- HTML
- Babel
- webpack
- express
- TypeScript
- git
- hook
- Javascript
- SSR
- github
- Today
- Total
목록react (13)
나는 오늘도 멋있다

1. 모든 행동에는 목표를 정하고 근거가 있어야 한다. 2. 문제가 발생하면 해결이 아닌 원인을 찾아야 한다. 3. 다른사람의 관점을 고려해야한다. 학습목적 상태관리와 함께 자주들었던 Context API를 들었을때는 전역상태관리 할때 쓰이는것 아닌가? 라는 생각만을 가지고 있었다. 보통 "가벼운 프로젝트에서 사용하기좋다", "좀더 큰프로젝트에서는 다른 상태관리 라이브러리" 라는 글들을 보았다. 왜그럴까? 사용법을 알아아보고 그에 대한 이유를 알아보자. 모든내용은 내가 추측한 것이아닌 공식문서의 내용을 토대로 하며, 요약 타이틀에만 나의 의견을 반영한다. Context API란? Context API는 React에서 제공하는 기능으로, 컴포넌트 간에 Props를 통해 명시적으로 정보를 전달하지 않고도 하..

1. 모든 행동에는 목표를 정하고 근거가 있어야 한다. 2. 문제가 발생하면 해결이 아닌 원인을 찾아야 한다. 3. 다른사람의 관점을 고려해야한다. 학습목적 React의 hook은 각목적에 맞게 쓰이고 자주 사용되는 hook들이 있다 useState는 상태변경, useEffect는 side Effect 등 말이다. 그중 useReducer은 명칭은 익숙하지만 사용해본적이 없다. Redux에서도 reducer함수에 따라 상태를 업데이트 하는데, Redux와 관계가 있는건가? 하는 궁금증으로 학습을하게 되었다. useReducer란? 여러 상태 업데이트가 많은 구성요소는 상태관리를 하기가 힘들수도 있다. 이런 복잡한 구성 요소의 상태를 하나의 함수로 관리하여, 단일 컴포넌트 내의 복잡한 상태들을 구조화하여 ..
React.memo란? 부모로 부터 전달받은 Props의 상태변경이 일어나지 않았을때 불필요한 렌더링을 방지하는 API 오직 Props 변화에만 의존하는 최적화 방법 React.memo 왜 사용해야할까? React의 함수형 컴포넌트에서 상태가 변했을경우 컴포넌트는 리렌더링이 발생한다. 문제는 자식의 상태는 변경되는것이 없는 상황에서 부모컴포넌트의 상태가 변경됨으로써 자식은 불필요한 렌더링이 발생한다. 그렇기에 해당 자식이 부모에게 받는 props의 상태가 동일하다면 자식을 렌더링 하지 않도록 할수 있다. React.memo 구문 const ComponentName = memo(Component) Component: 부모에게 Props를 받는 컴포넌트 React.memo 동작방식 부모에게 받는 Props가..
useMemo란? React에서 성능 최적화를 위해 사용되는 hook중 하나로, 이전에 계산된 함수호출 결과값을 메모제이션(memoization) 하여 불필요한 계산을 방지하여 렌더링성능(불필요한 렌더링 방지)을 향상시킨다 메모제이션(memooization): 이전에 계산된 값을 캐싱하여 동일한 입력에 대해 다시 계산을 수행하지않고 저장된 값을 반환 useMemo 왜 사용해야 할까? React의 함수형 컴포넌트는 해당 컴포넌트가 렌더링될 때마다 모든 내부 변수 및 함수가 초기화되기 때문에, 컴포넌트 내부에서 무거운 작업을 하여 값을 반환하는 함수가 있을때, 자주 변경되지않는 값이 렌더링마다 해당 함수를 호출하여 값을 반환하는것은 무의미한 반복 작업이다. useMemo는 이전에 계산된 결과값을 메모리에서꺼..
useEffect란? React의 함수형 컴포넌트에서 부수효과(side effects)를 다루기 위한 hook이다 부수효과(side effects): 컴포넌트의 렌더링과는 직접적으로 관련이 없는작업(네트워크 요청,DOM 조작 등) useEffect 왜 사용해야 할까? React의 함수형 컴포넌트에서는 일부 구성요소가 외부 시스템과의 동기화가 필요할 수 있다. 예를들자면 네트워크요청, DOM조작, 구독설정, 타이머 설정들등 컴포넌트의 렌더링과 직접적인 관련이 없는 경우에 사용한다. useEffect 구문 useEffect(callback,[dependencies]) callback: 부수효과를 수행하는 함수로, 컴포넌트 렌더링 후에 비동기적으로 실행된다. 필요에 따라 Clean-up함수를 반환할 수 있다...
useState란? 기존의 클래스 컴포넌트보다 간결하고 명확한 문법을 가지는 함수형 컴포넌트에서 상태변수를 추가할수 있게 해주는 hook이다. 상태변수: 프로그램이나 애플리케이션의 현재 상태를 나타내는 변수다. React에서의 상태변수는 주로 컴포넌트의 상태를 나타낸다. useState 왜 사용해야 할까? React의 함수형 컴포넌트에서 useState는 핵심 hook이라고 볼수 있다. 왜 핵심일까? 상호 작용의 결과로 화면의 내용을 변경해야 하는 경우가 많다. 즉 여러가지 상태변수를 간단하게 정의하고 업데이트하는데 사용된다. useState 구문 const [state, setState] = useState(initValue) initValue: 컴포넌트가 처음 마운트될때 사용되는 초기값 state: ..

사용자 인터페이스를 만들기 위한 JavaScript 라이브러리 1. 다른 웹 프레임워크나 라이브러리와 혼용해서 사용할 수 있음 2. 라우팅, 데이터 모델링, AJAX등은 외부 라이브러리를 사용해서 구현해야함 3. JSX(JavaScript 확장문법)을 사용하여 브라우저에서 실행되기 전 일반 JS형태의 코드로 변환됨 4. 최소한의 단위, 데이터함수, UI를 재사용 가능한 여러조각을 컴포넌트 기반으로 나누어 사용한다. 5. React의 개발핵심은 상태값을 효율적으로 관리하는것 리액트 라이프사이클(React LifeCycle) 리액트 가상 돔(React Virtual DOM) 리엑트에서 실제 DOM에 직접 접근하여 조작하는 대신, 적은 연산 시간을 위해 추상화한 자바스크립트 객체로서 실제 DOM의 가벼운 사본..

이전 글에서는 Home component를 다루는 page.tsx에서 nav의 기능을 다루도록 하였다. 하지만 나의 프로젝트 특성상 nav기능은 모든페이지에서 적용되므로 다시 Layout.tsx에서 그리도록 변경하였다. next.js의 파일구조를 명확하게 파악하지 못하여 발생한일이다. 사진과 보다시피 사이드에서 nav가 위치하고 있고 모든 내용들이 가운데에서 렌더링 되도록 하려는 구조였다. next.js 페이지 단위로 로드가 이루어진다는 생각에 메인 page.tsx에 nav기능을 넣은거 였다. 코드는 변경된것이 없다. 다만 코드의 위치변경을 해주었다. 이러한 점은 Login창을 구현하려할때 발견하였다. 기본적으로 유지되어야하는 Layout이 적용되지 않아서 알게 되었다. 아마 React의 영향이 아닌가 ..