이 글은 [[한글자막] React 완벽 가이드 with Redux, Next.js, TypeScript]를 수강하며 정리한 글입니다.

 

 

⚛️ 기본 환경: IDE: VS code, Language: React

 

 

조건문 출력

1. 3항 연산자

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
const Expenses = (props) => {
  return (    
    {filteredExpenses.length === 0 ? (
      <p>No Expenses found</p>
    ) : (
      filteredExpenses.map((expense) => (
        <ExpenseItem
          key={expense.id}
          title={expense.title}
          amount={expense.amount}
          date={expense.date}
        />
      ))
    )}
  );
};
 
 
cs

 

2. && 연산자

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
const Expenses = (props) => {
  return (            
    {filteredExpenses.length === 0 && <p>No Expenses found</p>}
    {filteredExpenses.length > 0 && (
      filteredExpenses.map((expense) => (
        <ExpenseItem
          key={expense.id}
          title={expense.title}
          amount={expense.amount}
          date={expense.date}
        />
      ))
    )}
  );
};
 
 
cs

 

 

3. 변수 선언

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
const Expenses = (props) => {
 
  let expensesContent = <p>No Expenses found</p>;
 
  if(filteredExpenses.length>0){
    expensesContent = filteredExpenses.map((expense) => (
      <ExpenseItem
        key={expense.id}
        title={expense.title}
        amount={expense.amount}
        date={expense.date}
      />
    ));
  }
 
  return (
    {expensesContent}
  );
};
 
 
cs

 

 

 

이 글은 [[한글자막] React 완벽 가이드 with Redux, Next.js, TypeScript]를 수강하며 정리한 글입니다.

 

 

⚛️ 기본 환경: IDE: VS code, Language: React

 

 

1. Controlled Component

: 사용자의 입력을 기반으로 state를 관리하고 변경

<select>는 selected값에 따라 value가 확정 = Controlled Component

+ Single Source of Truth, 신뢰 가능한 단일 출처

: 하나의 상태는 한 곳에서만 존재

: state value가 변경 → state값이 쓰인 곳도 항상 최신값으로 유지됨

: Single Source of Truth가 이뤄지는 component가 제어 컴포넌트

❌ 불필요한 Rerendering or API 호출이 발생할 수 있음

⭕ 대안: Throttling(마지막으로 함수가 호출되면 일정시간이 지나기 전에는 다시 동일한 함수가 호출되지 않는 것)

             : Debouncing(연이어 함수가 호출되면 가장 마지막 ( 또는 맨 처음 ) 함수만 호출되는 것)

 

2. Uncontrolled Component

: React에서 값을 보장하지 않는 방식으로 태그가 자체적으로 상태를 갖는 경우를 의미

: 대표적으로 input 태그는 값 입력 시, 입력 폼 내부 상태로 관리됨

: Uncontrolled Component는 값이 실시간으로 동기화되지 않으며 Click event 발생 등 사용자가 트리거할 때, Rerendering을 하여 값을 동기화시킴

 

 

 

참고 자료

 

[React] 제어 컴포넌트 VS 비제어 컴포넌트

[제어 컴포넌트와 비제어 컴포넌트란?] 어렵게 말하자면, React에 의해서 값이 제어되는 컴포넌트를 제어 컴포넌트, React에 의해서 값이 제어되지 않는 컴포넌트를 비제어 컴포넌트라고 합니다.

itprogramming119.tistory.com

 

Controlled and uncontrolled form inputs in React don't have to be complicated - Gosha Spark

There are many articles saying you should use setState, and the docs claim refs are bad. So contradictory. How are you supposed to make forms?

goshacmd.com

 

[React] 제어 컴포넌트 vs 비제어 컴포넌트

앞서 useState와 useRef에 대해서 정리를 했었다. [React] useRef 그리고 useState 일반적으로 우리가 상태값을 관리할 때는 useState를 사용한다. 거기에서 state 값이 변경되면 리렌더링이 발생하면서 화면이

bum-developer.tistory.com

 

제어 컴포넌트와 비제어 컴포넌트

제작중인 앱에서 사용할 컬러 팔레트 패키지를 살펴보던 중, 의아한 점이 하나 생겼습니다. Controlled 컴포넌트에서 selectedColor 라는 변수를 갖는 것만 제외하면 둘은 거의 동일해 보이는데, 왜 Cont

merrily-code.tistory.com

 

React: 제어 컴포넌트와 비제어 컴포넌트의 차이점

👀 제어 컴포넌트와 비제어 컴포넌트의 차이점, 활용 방법에 대해 알아봅시다

velog.io

 

 

[ReactJS_Complete] React.useRef()

이 글은 [[한글자막] React 완벽 가이드 with Redux, Next.js, TypeScript]를 수강하며 정리한 글입니다. ⚛️ 기본 환경: IDE: VS code, Language: React React.useRef() : .current프로퍼티에 변경 가능한 값을 담고 있는

hj0216.tistory.com

 

이 글은 [[한글자막] React 완벽 가이드 with Redux, Next.js, TypeScript]를 수강하며 정리한 글입니다.

 

 

⚛️ 기본 환경: IDE: VS code, Language: React

 

 

자식 Component → 부모 Component 데이터 전달

1. 부모 Component에 데이터를 받을 수 있는 함수 생성 및 전달

 

2. 자식 Component에서 props로 전달받은 후, data를 부모 Component로 전달받은 함수에 주입

결과

 - 자식 Component에서 onSaveExpenseData에 인자로 expenseData를 넘겨줌

 - 부모 Component에서 선언된 saveExpenseDataHandler에 expenseData를 매개변수로 입력 및 호출

 - Console에 전달받은 데이터 및 id 요소 출력

 

이 글은 [[한글자막] React 완벽 가이드 with Redux, Next.js, TypeScript]를 수강하며 정리한 글입니다.

 

 

⚛️ 기본 환경: IDE: VS code, Language: React

 

 

1. state를 개별적으로 관리

 

 

2. state를 Object로 관리

🚨 setUserInput() 시, 최신 입력값으로 모두 업데이트

setUserInput({enteredTitle: event.target.value}); 시, enteredAmount, enteredDate값이 모두 삭제되는 문제

→ ... spread operator를 통해 객체 요소 복사 후 변경된 값만 업데이트 필요

 

 

3. state를 Object로 관리 + 최신상태 보장

🚨 state update는 바로 이뤄지는 것이 아니라 React의 schedule 표에 따라 이뤄짐

한 번에 많은 state update 실행 시, 직전의 state가 아닌 잘못된 상태 snapshot에 의해 의존하게될 수 있는 문제 발생

→ prevState를 활용한 메서드 접근방법을 통해 이전 상태값을 최신으로 유지하여 무결성 보장

⭐ 상태 업데이트가 이전 상태에 의존 시, 함수를 사용한 업데이트 필수

 

이 글은 [[한글자막] React 완벽 가이드 with Redux, Next.js, TypeScript]를 수강하며 정리한 글입니다.

 

 

⚛️ 기본 환경: IDE: VS code, Language: React

 

 

JSX 문법

: Javascript에 XML을 추가한 확장한 문법으로 React 프로젝트에서만 활성화되는 특수한 비표준 구문

 

React 객체 활용

 

 

⭐ JSX를 통해 자바스크립트에서 HTML과 비슷하게 코드를 작성할 수 있도록 하여 코드의 가독성을 높일 수 있는 장점이 있음

JSX문법에서 return 태그가 최종적으로는 1개만 가능한 이유

: JSX문법에서 2개 이상의 태그로 return 값을 만드는 것

= React 객체 문법 상 return 대상이 2개의 React.createElement()

→ return 값이 1개인 js문법 위배

 

 

 

참고 자료

 

JSX 소개 – React

A JavaScript library for building user interfaces

ko.legacy.reactjs.org