3 분 소요

리액트 (React)

본 포스트는 맥 OS, M3 버전에서 설치하였고, 출처는 코딩애플 (New 리액트) 채널을 참고하였다.

리액트 (React)를 배워야 하는 이유

  1. SPA (Single Page Application)을 만들 수 있음.

인스타 그램과 같이 화면 전환이 자유로운 것을 말함

  1. Component 를 활용해 HTML 재사용이 편리함.
  2. 데이터가 HTML에 자동으로 반영됨.

리액트 외에도 여러가지도 존재하지만, 리액트를 사람들이 제일 많이 사용함. 또한 리액트-네이티브를 활용해 앱 개발도 가능함.


개발환경 셋팅 & 리액트 프로젝트 생성

먼저 윈도우와 맥 공통적으로 1,2번 절차는 반드시 필요하다.

  1. Nodejs 검색해서 본인의 OS에 맞게 설치
  2. VSCode 에디터 설치
  3. [프로젝트 생성] : 작업용 폴더를 만들고, 그 폴더 내에서 터미널을 열기
  • 열린 터미널에 아래의 명령어 입력
npx-create-react-app 프로젝트명

아마 높은 확률로 안될 것임. 그럴 때는 아래 방법 사용

윈도우(Window)

아마 ‘허가되지 않은 스크립트’ 라는 설명이 나올 것이다.

  1. PowerShell 을 관리자 권한으로 실행
  2. 그 이후에 아래의 명령어를 실행
Set-ExecutionPolicy Unrestricted

맥북(Mac OS)

터미널의 명령어 앞에 sudo를 입력하여 다시 실행 -> 그 이후 본인 패스워드 입력

sudo란?

  • 유닉스 계열 OS에서 관리자 권한으로 실행할 수 있게 하는 명령어로 superuser do의 줄임말
  1. VsCode 에디터에서 [File] - [Open Folder] 를 통해 파일을 열어서 작업을 진행하면 된다.
- 여기서 작업을 하다가 미리 수행 결과를 보고 싶으면 터미널에서 아래의 명령어를 통해 localhost:3000에서 실행결과 확인이 가능하다.
npm start

아마 파일을 열었으면 아래의 사진과 같이 확인할 수 있을 것이다.

react_1

  • node_modules : 라이브러리 코드 보관함
  • public : static 파일을 모아두는 곳
  • src 폴더 : 소스코드 보관함.

주로 App.js에서 코딩 (메인페이지)

  • package.json : 프로젝트 정보

JSX 문법

폴더를 열고, App.js 파일에서 코딩을 하면 js 파일임에도 불구하고 html 파일도 작성이 가능한 것을 확인할 수 있다. 그 이유는 js 파일이 아니라, JSX 라는 새로운 파일임을 알 수 있다. 다음은 JSX 파일의 큰 중요 문법이다.

  1. class를 넣을 때에는 className을 활용해 적어줘야함.

CSS 파일의 작성을 위해서는 상단에 Import 'css파일 경로'를 적어줘야함.

  1. 변수를 넣을 때 {중괄호}를 사용하기(데이터 바인딩)
  • 기존에는 변수를 넣을 때
document.querySelector{'a1'}.innerHTML
  • 웬만한 곳에 다 사용이 가능하다.

EX) ID, src, className 등등..

  1. 스타일을 사용할 때의 주의사항
  • 원래는 font-size를 사용했는데 jsx파일에서 ‘-‘ 기호는 수학적 기호로 해석하기에 fontSize를 사용한다.
  1. return() 안에는 병렬로 태그 2개 이상의 기입을 기피하는 것이 좋다.

위에 크게 4가지가 JSX 문법의 3가지이다.

주로 에러 메시지는 터미널이나 브라우저에서 확인하거나 개발자 도구를 통해 확인할 수 있다. WARNING 말고 ERROR에 주로 초점을 두어야하는데, WARNING 부분은 변수를 초기화하고 사용을 안할 때 사용되어서 아래의 명령어를 통해 WARNING 경고문을 안뜨게 할 수 있다.

eslint-disable

자료 저장하기

다음은 JSX 파일에서 자료를 저장하는 방법이다.

1. Let

let abc = 'java';

원래 javaScript에서는 var을 사용했는데, 여기서는 let을 사용한다.

let의 장점

  • 변수 재선언이 된다. (var이나 const는 불가능)
  • let으로 선언된 변수는 선언 단계와 초기화 단계가 분리되어 진행된다.

요약 : 재할당이 필요한 경우엔 한정해 **let**을 사용하는 것이 좋다.

2. state

다음은 state를 사용하는 것이다.

문법 :

let[a, b] = useState('자료명');

만드는 방법은 다음과 같다.

  1. Import {useState}
  2. useState(보관할 자료)
  3. let[작명, 작명]

앞에 있는 작명은 변수랑 똑같다고 생각하면 된다.

  • state의 장점

중간에 자료가 변경해도 ‘자동 렌더링’이 가능하다

즉, 굳이 다 사용하지 않고 잘 변경될 것 같은 자료(좋아요 수)에 주로 사용한다.

2 - 1. state의 변경

위 문법에서 a는 변수명이랑 같다고 하였고, 뒤에 있는 b는 state의 변경을 도와주는 함수이다. 따라서 문법은 아래와 같다.

state func( 새로운 state ) //func는 변경함수

이렇게 했을 때 뒤에 있는 변수가 있어야 재렌더링이 가능하다.

숫자, 문자열 상관없이 변경이 다 된다.

  • state가 array / object 일 때
  1. 일부만 변경해도 가능하다.

EX) a[0] = ‘안녕’

-> 하지만, array/object에서의 변경에서는 원본을 보존하는 것이 좋다. 그래서 주로 2번의 방법을 사용한다.

  1. copy본을 만들어서 1번 방법 그대로 적용하기

여기에서는 아래의 문법이 사용된다.

[...변수명]
  • copy를 만들 때 주의사항

기존 state와 신규 state(copy본) 이 같은 경우에는 JSX 파일 내에서 변경을 하지 않아준다.

shallow / deep copy의 개념

Component

이렇게 HTML을 사용하다보면 너무 코드 내에서 더럽다는 것을 확인할 수 있을 텐데 이를 해결하는 방법이 component이다.

<함수명></함수명> 
<함수명/>

위 아래 중 하나 골라서 사용하면 된다.

  • 방법
  1. function을 만들기

function App() 또 어떻게 보면 Component 이기에 App() function 외에서 정의 해주야 한다.

  1. return() 안에 HTML 내용을 담기
function 함수명() {
  // HTML 내용
}
  1. <함수명>

    사용

return() 안에 HTML을 병렬기입하게 될 때, 의미없는 <div> 이 사용된다면 이는 <> </> 로 대신 사용이 가능하다.

  • 사용하면 좋을 때
  1. 반복되는 HTML을 축약할 때 사용한다.
  2. 큰 페이지들을 전환하기에 좋다.
  3. 자주 변경하는 것들에 사용하기 좋다.

다음 리액트 관련 문법에 대해 실습하면서 알게 된것들 더 올리도록 하겠다.

태그:

카테고리:

업데이트: