Git Product home page Git Product logo

react1-1's Introduction

유용재 202030424

5월 22일 강의 내용

리스트의 키

  • 리스트에서의 키는 리스트에서 아이템을 구별하기 위한 고유한 문자열이다.
  • 어떤 아이템이 변경, 추가 또는 제거되었는지 구분하기 위해 사용한다.
  • 키는 같은 리스트에 있는 엘리먼트 사이에서만 고유한 값이면 된다.

제어 컴포넌트

  • 제어 컴포넌트는 사용자가 입력한 값에 접근하고 제어할 수 있도록 해주는 컴포넌트이다.

5월 8일 강의 내용

this가 명확하지 않을 때

  • 콜백 함수로 사용할 때
  • 이벤트 핸들러로 사용할 때
  • 메서드를 변수에 할당할 때
  • bind 함수는 특정 this 값을 강제로 설정할 수 있다.

인라인 if

  • 삼항 연산자를 사용한다.
  • 중첩하여 사용할 수 있지만 가독성이 떨어질 수 있다.

인라인 if-else

  • 삼항 연산자를 사용한다.
  • 문자열이나 엘리먼트를 넣어서 사용 가능하다.

5월 1일 강의 내용

커스텀 훅 만들기

  • 이름은 use로 시작해야 한다.
  • 커스텀 훅을 사용하면 코드의 중복을 줄이고, 컴포넌트의 재사용성과 유지보수성을 높일 수 있다.

4월 17일 강의 내용

Hook이란

  • 함수형 컴포넌트에서도 state나 생명주기 함수의 기능을 사용하게 해주기 위해 추가된 기능
  • state와 생명주기 기능에 갈고리를 걸어 원하는 시점에 정해진 함수를 실행되도록 만든 함수를 의미
  • hook의 이름은 모두 use로 시작

useState

  • useState는 함수형 컴포넌트에서 state를 사용하기 위한 Hook

useEffect

  • 사이드 이펙트를 수행하기 위한 함수
  • 클래스 컴포넌트의 생명주기 함수와 같은 기능을 하나로 통합한 기능을 제공
  • useEffect(이펙트 함수, 의존성 배열);
  • 의존성 배열은 이펙트가 의존하고 있는 배열로 배열 안에 있는 변수 중에 하나라도 값이 변경되었을 때 이펙트 함수가 실행

useMemo

  • 이전 계산값을 갖고 있기 때문에 연산량이 많은 작업의 반복을 피할 수 있음
  • 의존성 배열을 넣지 않을 경우 렌더링이 일어날 때마다 함수가 실행되어 의미가 없음 -> 의존성 배열을 넣어야 함!

useCallback

  • useMemo와 비슷한 역할 차이점은 값이 아닌 함수를 반환

useRef

  • 레퍼런스란 특정 컴포넌트에 접근할 수 있는 객체를 의미
  • 객체에는 .current라는 속성이 있는데 이것은 현재 참조하고 있는 엘리먼트를 의미

훅의 규칙

  • 최상의 레벨에서만 호출해야 한다!(반복문이나 조건문 중첩된 함수 안에 넣어서는 안된다)
  • 리액트 함수 컴포넌트에서만 훅을 호출해야 한다(일반적인 자바스크립트 함수에서 훅을 호출하면 안된다)

4월 3일 강의 내용

컴포넌트란

  • 앱을 이루는 가장 작은 조각

props

  • 상위 컴포넌트에서 하위 컴포넌트로 데이터를 전달해주는 객체

pure함수 vs impure 함수

  • pure function은 클래스의 멤버나 상태를 변경하지 않기로 하는 함수
  • 일반적으로 pure function은 값을 구해오거나 데이터 값을 출력하기만 하는 작업에 사용
  • impure function은 자유롭게 상태를 변경할 수 있는 함수

React.createElement

  • React Element를 생성한다.
  • React Element 자체로는 DOM 요소를 생성하지 않는다
  • 쓰기 불편하다.. (React 17 이후로는 개선된 JSX Transform을 지원)

컴포넌트 이름 짓기

  • 항상 대문자로 시작 .. react는 소문자로 시작하는 컴포넌트를 DOM 태그로 인식하기 때문
  • 컴포넌트 파일 이름과 컴포넌트 이름은 같게 해야 한다

컴포넌트 합성

  • 리액트에서는 컴포넌트 안에 또 다른 컴포넌트를 사용할 수 있기 때문에 복잡한 화면을 여러 개의 컴포넌트로 나누어 구현할 수 있다

컴포넌트 추출

  • 복잡한 컴포넌트를 쪼개서 여러 개의 컴포넌트로 나눌 수 있다
  • 처음부터 1개의 기능만 사용하도록 설계하는 것이 좋다

state란?

  • state는 리액트 컴포넌트의 상태(변경 가능한 데이터)를 의미
  • state가 변하면 다시 렌더링이 되기 때문에 렌더링과 관련된 값만 state에 포함시켜야 한다

state 특징

  • 리액트 만의 특별한 형태가 아닌 자바스크립트 객체
  • state는 변경은 가능하지만 직정 수정하면 안된다(못 바꾼다고 생각) - 변경하려면 setstate() 함수를 사용

생명주기

  • constructor가 실행 되면서 컴포넌트가 생성
  • 생성 후 componentDidMount() 함수가 호출
  • 컴포넌트가 소멸하기 전까지 여러 번 렌더링
  • 렌더링은 props, setState() forceUpdate() 에 의해 상태가 변경됨
  • 렌더링이 끝나면 compomentDidUpdate() 함수가 호출
  • 마지막으로 컴포넌트가 언마운트 되면 componentWillUnmount() 함수가 호출

3월27일 강의 내용

XML(Extensible Markup Language)이란?

  • 공유 가능한 방식으로 데이터를 정의하고 저장할 수 있는 언어
  • XML 파일을 사용하면 모든 네트워크에서 데이터를 손쉽게 전송할 수 있다

JSX란?

  • XML과 HTML을 JS로 변환시켜준다
  • createElement 함수를 사용하여 자동으로 JS로 변환시킨다
  • 가독성을 높여준다

JSX의 장점

  • HTML 코드와 비슷하여 자바스크립트 코드만을 사용했을 떄보다 더 익숙하며 가독성이 좋다
  • div, span 같은 HTML 태그를 사용할 수 있으며, 개발자가 만든 컴포넌트도 JSX 안에서 작성할 수 있기 때문에 활용도가 높다

JSX 사용법

  • 모든 자바스크립트 문법을 지원
  • 자바스크립트 문법에 XML과 HTML을 섞어서 사용

엘리먼트의 정의

  • 엘리먼트는 리액트 앱을 구성하는 요소
  • 엘리먼트는 자바스크립트 객체 형태로 존재한다.

리액트 엘리먼트와 DOM엘리먼트의 차이

  • 리액트 엘리먼트는 리액트에 Virtual DOM의 형태로 존재
  • DOM 엘리먼트는 실제 브라우저의 DOM에 존재

엘리먼트의 특징

  • 불변성(한번 생산된 엘리먼트의 children이나 attributes를 바꿀 수 없다)

만약 내용이 바뀌면?

  • 이떄는 컴포넌트를 통해 새로운 엘리먼트를 생성해야 한다
  • 그 다음 이전 엘리먼트와 교체를 하는 방법으로 내용을 바꾼다

엘리먼트를 렌더링하기 위해 필요한 코드

  • ReactDOM.render();

3월20일 강의 내용

리액트란?

  • 사용자 인터페이스를 만들기 위한 자바스크립트 라이브러리
  • SPA를 쉽고 빠르게 만들 수 있도록 해주는 도구

프레임워크와 라이브러리의 차이점

  • 프레임워크는 개발을 위한 기본 구조와 규칙을 제공하는 도구
  • 개발자는 프레임워크가 제공하는 규칙과 인터페이스에 따라 코드를 작성해야 한다
  • 라이브러리는 개발을 위해 재사용 가능한 코드의 집합이며 함수,클래스,모듈 등으로 구성된다
  • 개발자가 필요한 기능을 호출하며 코드의 흐름과 제어를 직접 관리한다

리액트의 장점(속도, 컴포넌트)

  1. 랜더링이 빠르다(Virtual DOM)

DOM은 동기식 서버에 있던 파일이 변하면 다시 동기화해서 내려받는 방식
Virtual DOM은 비동기식은 한번 랜더링할 때 파일을 임시로 보관 후 파일이 변하면 변한 부분만 그 부분만 다시 저장하는 방식

parsing :

  1. 컴포넌트 기반 구조
  • 리액트의 모든 페이지는 컴포넌트로 구성
  • 하나의 컴포넌트는 다른 여러 개의 컴포넌트의 조합으로 구성됨
  • 컴포넌트 구조를 사용하기 때문에 재사용성이 뛰어남
  • 컴포넌트 이름은 파스칼케이스로 저장
  • 재사용성이 가능하려면 해당 모듈의 의존성이 없어야 한다
  1. 메타에서 오픈소스 프로젝트로 관리하고 있다

  2. 활발한 지식 공유& 커뮤니티가 있다

  3. 모바일 앱 개발 가능

  • 리액트 네이티브라는 모바일 환경 UI프레임워크를 사용하면 크로스 플랫폼 모바일 앱을 개발할 수 있습니다

리액트의 단점

  1. 방대한 학습량
  • 자바스크립트를 공부하면 빠르게 학습할 수 있다(모든 걸 알아야 하진 않기 때문에 방대하진 않다..)
  1. 높은 상태 관리 복잡도
  • life cycle 함수를 이해해야 하기 때문에 복잡하다(요즘에는 hook 라이브러리를 사용해 보다 쉽게 사용이 가능하다)

       Hook이란?

    • 리액트 클래스형 컴포넌트에서 이용하던 코드를 작성할 필요없이 함수형 컴포넌트에서 다양한 기능을 사용할 수 있게 만들어준 라이브러리
    • 함수형 컴포넌트에 맞게 만들어진 것으로 함수형 컴포넌트에서만 사용 가능하다.

3월13일 강의 내용

HTML이란? (Hyper Text Markup Language)

  • 순차적 접근을 뛰어넘는 태그를 통한 구조적 표현이 가능한 언어

SPA(Single Page Application)

  • 다수의 페이지를 하나의 페이지처럼 처리하는 기술
  • 필요한 데이터만 받아와서 현재 화면에 렌디링하는 방식
  • 스크롤 할 때마다 컨텐츠를 불러온다
  • 페이지 전환시 로딩 속도와 반응성이 좋다
  • but, 첫 페이지 로딩 속도가 느리다

CSS(Cascading Style Sheets)

  • CSS는 색상이나 크기, 이미지 크기나 위치, 배치 방법 등 웹 문서의 디자인 요소를 담당한다
  • 예시와 같이 선택자인 HTML요소를 선택해 속성과 속성값을 선언부로 사용하여 작성한다
h1 {
  color: red;
  font-size: 5em;
}

JS

  • JavaScript는 웹 페이지에서 복잡한 기능을 구현할 수 있는 스크립팅 또는 프로그래밍 언어

javascript 연산자


종류 예시
대항연산자 !(논리부정), ~(비트부정), + -(부호), ++(증감연산자)
산순연산자 *(곱하기), /(나누기), %(나머지), +(더하기), -(뺴기)
시프트연산자 <<, >>, >>>
관계연산자 <, <=, >, >=, ==, !=
논리연산자 &, ^, |
조건연산자 ?, :
대입연산자 =, +=, -=, *=, /=, %=, <<=, >>=, >>>=, &=, ^=, |=

함수

  • 다른 객체처럼 속성 및 method를 가질 수 있는 객체이며 인자를 가질 수 있는 코드 블록이다.
  • 함수를 사용하는 이유는 코드 재사용, 동일한 코드를 여러 번 사용하며 다른 결과를 도출할 수 있기 때문이다.

함수의 특징

  • 변수 안에 담길 수 있다(함수가 값이기 떄문에)
  • 다른 함수의 인자값을 전달될 수 있다
  • 함수의 return값으로도 사용할 수 있다
  • 객체의 속성 안에 method로 담길 수 있다
  • 배열의 값으로도 사용할 수 있다

화살표함수

  • 코드를 더 간결하고 가독성 좋게 작성할 수 있게 만들어준다
  • 그러나 this, super 등에 대한 자체 바인딩이 없고, 메서드로 사용할 수 없다
  • 생성자로도 사용할 수 없다

JavaScript 변수

종류 특징
var 중복 선언 가능, 재할당 가능
let 중복 선언 불가능, 재할당 가능
const 중복 선언 불가능, 재할당 불가능

react1-1's People

Contributors

creativearang avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.