FE RYAN
완벽하지 않으면 어때
FE RYAN
전체 방문자
오늘
어제

블로그 메뉴

  • 💾 깃허브 링크
  • 홈
  • 태그
  • 분류 전체보기 (151)
    • 개인프로젝트 (8)
      • 개인 포트폴리오 웹앱 (6)
      • 프론트엔드 기술면접 아카이빙 웹앱 (2)
    • 기록 (121)
      • 원티드 프리온보딩 인턴십 (0)
      • 코드스테이츠 프론트엔드 (75)
      • 생각들 (3)
      • Today I learned (32)
      • 회고 (9)
      • 리뷰 (1)
    • 개발 (17)
      • React (3)
      • Javascript (7)
      • CSS (1)
      • HTML (3)
      • HTTP (1)
      • 자료구조 (0)
      • 알고리즘 (2)
    • 코딩테스트 (2)
      • 백준 (2)
      • 프로그래머스 (0)
    • 디자인 (1)
      • UI & UX (1)
    • 수학 (0)
    • 자기계발 (0)

공지사항

인기 글

태그

  • 원시타입
  • useMemo
  • Til
  • seb39
  • 코드스테이츠
  • 딥다이브
  • css
  • 신입개발자
  • 부트캠프
  • 메인프로젝트
  • 자바스크립트 딥다이브
  • ES6
  • 포트폴리오
  • 회고
  • seb 39
  • 자바스크립트
  • 리액트
  • 프론트엔드
  • 타입스크립트
  • HTML

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
FE RYAN

완벽하지 않으면 어때

기록/Today I learned

TIL- 22.03.21 월

2022. 3. 22. 08:56
728x90

1. Input(학습)

Reference

  • 코딩애플님 리액트 강의
  • 라매개발자님 유튜브 강의

1. 리액트로 블로그 만들기

React의 내장함수 useState

  • state란? : 변수처럼 데이터를 저장할 수 있는 공간.
  • 최초에 상단에서 먼저 import 해와야 함.
import React, { useState } from 'react';
  • 데이터 저장시 변수에 저장하거나 state에 저장할 수 있다.
  • 변수에 저장하면 되지 왜 state를 써야하나?
    • 페이지 새로고침 없이 html을 re-rendering 하기 위해. 따라서 중요하거나 자주 변경될 데이터는 state에 저장.
  • state에 저장할 수 있는 데이터: 원시형, 객체 모두 가능
  • state 생성시 2가지 데이터가 들어있는 array가 생성됨.
    • [0]: state의 값
    • [1]: state 변경함수
// state 생성시 만들어진 배열을 구조 분해 할당한 예시.
// 변경함수 호출하여 state 변경.

let [조회수, 조회수변경] = useState(0);
// 조회수 = 0
조회수변경(1);
// 조회수 = 1
  • state에 저장된 데이터 변경방법: 반드시 변경함수를 사용하여 변경
    1. 기존 state의 복사본을 만든다.
    2. 복사본에 수정사항 반영
    3. 변경함수(복사본);

구조 분해 할당(ES6 Destructuring 문법)

얕은 복사 vs 깊은 복사, reference data type

  • 원시값: 대입시 깊은 복사, 객체: 대입시 얕은 복사
  • shallow copy: 원본 객체 또는 복사한 객체가 값이 수정될 경우 변경사항을 공유함
  • deep copy: 복사 이후 변경사항이 공유되지 않고(참조가 끊김) 원본과 사본 각각 수정가능
  • 객체를 deep copy 하려면 전개연산자를 사용하여 대입.

Component

  • 정의: 여러 html 코드들을 하나의 component로 묶은 모음.
  • 왜 사용하나?
    1. 반복되는 html 코드를 쉽게 재사용하기 위해
    2. 자주 변경되는 코드를 묶어 해당부분만 재렌더링되게 하여 성능상의 이점
    3. 여러 component를 묶어 하나의 페이지 구성
  • 단점: component를 많이 만들수록 state 관리 힘듬
  • 사용법
// component 생성 - 함수 형태로 return 값에 묶을 내용 넣기
function Header () {
    return (
        <header>
            <h2>내 블로그</h2>
            <p>안녕하세요</p>
        </header>
    );
}
// component 사용 - 원하는 위치에 함수명으로 태그 사용
<Header></Header>

return 내에선 하나의 태그만 쓸 수 있다.

여러개 쓸 경우 하나의 태그 안에서 사용하거나 fragments 사용(<>, </>).

// fragment를 사용하여 return 안에서 여러 div 사용.
function App () {
    return (
        <>
        <div></div>
        <div></div>
        </>
    );
}
  • 주의사항
    • 함수명 첫글자는 대문자로 써야만 렌더링됨.
    • return 내부에는 하나의 div만 사용가능.
    • 상위 component의 state를 사용하려면 props 문법 필요

React로 ui 만드는 방법(모달, 탭, 햄버거메뉴 응용가능)

  • ui의 상태정보는 state에 저장한다.
  • if문 사용이 불가능하므로 조건문은 삼항연산자를 사용한다.
  • 버튼을 1번 누르면 동작하고 다시 누르면 원상태로 가려면 변경함수의 매개변수로 !state명 해주면 됨. 이후 표현식으로 삼항연산자의 참의 경우와 거짓일 경우에 동작한 상태와 기본 상태를 지정해주면 끝. (내가 최초에 썼던 방법: state가 최초에 1이고 클릭시마다 변경함수로 +1시키고 짝수면 켜지고 홀수면 꺼지게 삼항연산자 사용했음.)

2. Output(복습)

3. Reminder

  • jsx 문법에서 왜 class=””를 사용할 수 없을까?
  • 어떤 데이터를 state에 저장해야 할까?
  • state에 저장된 데이터 변경방법은?
  • onClick = {...} 중괄호 안에 함수명 적을때 함수명 옆에 소괄호를 붙이지 않는 이유는?
  • state의 데이터를 deep copy하여 수정하는 방법은?
  • 어떤걸 component로 만드는(묶는)게 좋을까?
  • 리액트에서 조건문을 사용하려면?
  • 리액트에서 ui개발시 ui의 상태정보는 무엇으로 저장할까?
  • 얕은복사란? 깊은복사란?
728x90
저작자표시 변경금지

'기록 > Today I learned' 카테고리의 다른 글

TIL 220402  (0) 2022.04.02
TIL- 22.03.22 화  (0) 2022.03.24
TIL- 22.03.09 수  (0) 2022.03.09
TIL-22.03.05 토  (0) 2022.03.05
TIL- 22.03.04 금  (0) 2022.03.04
    '기록/Today I learned' 카테고리의 다른 글
    • TIL 220402
    • TIL- 22.03.22 화
    • TIL- 22.03.09 수
    • TIL-22.03.05 토
    FE RYAN
    FE RYAN

    티스토리툴바