1) Node.js 최신버전 설치
2) 프로젝트 담을 폴더(폴더명: blog_project) 생성 후 VSCode로 폴더 열기
2) npx create-react-app 파일명(blog)
을 터미널에 작성하여 프로젝트 생성
❗ Error가 발생할 경우
🐥 에러1) npx 어쩌구 명령어 입력하자마자 에러가 난다면?
설치가 잘 되다가 갑자기 중간에 빨간게 뜨며 에러가 나는 대부분의 경우는 nodejs가 최신버전이 아닐 경우이다.
그리고 특히 윈도우는 Nodejs 14이상 버전이 꼭 필요하다. 14 이상이 아니면 재설치하기.🐥 에러2) npm : command not found 에러
npm : command not found 라는 에러가 뜨는 것은 99%의 확률로 node 이상하게 설치해서이다.
C드라이브에 설치하면 작업폴더를 C드라이브에 만들어야 제대로 npm 어쩌구가 이용가능하다.
Node 삭제했다가 공식 홈페이지에서 Node 신버전 제대로 다운받아서 위 설명대로 다시 설치해보기.🐥 에러3) 맥에서 permission이 없어요, 권한이 없어요 이런 에러가 뜬다면?
npm ERR! syscall access npm ERR! Error: EACCES: permission denied, access '/usr/local/lib/node_modules' ▲ 예를 들면 이런 에러인데 폴더 수정 권한이 없다고 에러를 띄우는 것.
위의 에러는 /usr/local/lib/node_modules 라는 폴더에 수정권한을 주면된다.
터미널을 켜서 이거 둘 중에 하나를 입력해보기(아마 둘 중 하나 입력하시면 대부분 해결될것)sudo chown -R 님맥북유저이름: 위에에러뜬경로 sudo chown -R $USER 위에에러뜬경로
🐥 에러4) 해결책 찾아봐도 진짜 안되면?
그냥 sudo npx create-react-app blog 이런 식으로 npm이나 npx 쓰실 때 앞에 sudo 라는 단어를 붙여준다.🐥 에러5) 윈도우 Powershell에서 빨간글씨로 ‘보안오류’가 뜬다면?
“허가되지 않은 스크립트 입니다 어쩌구~” 그런 에러가 뜨면,시작 – 검색 – Powershell 검색 – 우클릭 – 관리자 권한
으로 실행한 뒤Set-ExecutionPolicy Unrestricted
라고 대소문자 하나라도 틀리지않고 입력하기.🐥 에러6) 윈도우는 Powershell을 이용하는 경우도 권한이 없다고 뭐라 그럴 수 있다
해결책1. 터미널을 VScode 에디터에서 켜서 npx 어쩌구 그런거 하지 말고 터미널을 켜서 한번 아래와 똑같이 설치해보기.아까 만든 작업폴더를 탐색기로 오픈한 뒤,
파일 – PowerShell 열기 – 관리자권한
으로PowerShell 열기
눌러서 터미널을 관리자모드로 열기.
이렇게 연 다음에npx create-react-app blog
어쩌구가 되면 앞으로 터미널에서 뭐 하라고 하면 터미널 이렇게 켜서 사용하면 된다.🐥 에러7) The engine “node” is incompatible with this module.
npx로 설치시 이런 에러가 있을 수 있다. nodejs 버전이 낮거나 다르다는 뜻이며 nodejs를 에러메세지가 요구하는 버전으로 재설치하시면 된다.
👉 JSX 기본 문법
class=””
를 넣고 싶으면 className=””
라고 사용<input />
, <img />
) < > < /> 빈태그 가능
){ }
)로 감싸주고 삼항연산자
사용하기{ }
)로 감싸주고 map
사용하기1) 변수 생성
2) 변수에 원하는 값 담기
3) 변수명을 return문 내 중괄호로 감싸서 넣어주기
function App(){ let data = '안녕하세요'; // data라는 변수 생성 후, 값을 담아준다 return ( <div className="App"> <div className="black-nav"> <div>개발 blog</div> <div> {data} </div> // 중괄호 내 변수명을 담음으로써 "안녕하세요" 내용이 담긴다 </div> </div> ) }
❗
href
,id
,className
,src
등 여러가지 HTML 속성들에도 데이터바인딩이 가능
1) import React, { useState } from 'react';
선언하기
2) let [state명, state변경함수] = useState(값넣기)
로 state생성
3) state를 넣고자 하는 부분에 {state명}
을 넣어준다
import React, { useState } from 'react'; import './App.css' function App(){ let [title, setTitle] = useState('스릴러 영화 추천'); // state이름: title , state변경함수 이름: setTitle return ( <div className="App"> <div className="black-nav"> <div>개발 blog</div> </div> <div className="list"> <h3> { title } </h3> // <h3>스릴러영화추천</h3> 으로 출력 <p>2월 17일 발행</p> <hr/> </div> </div> ) }
useState()
라는 함수는 state를 하나 만들어주는 함수이다.import {useState}
를 추가해야한다useState( 저장할 데이터 )
이렇게 사용하면 state에 데이터를 저장할 수 있다.[데이터1, 데이터2]
이라는 array 데이터가 두개 남는다.💡 destructuring 문법이란?
array 안에 있는 데이터들을 변수로 쉽게 저장하고 싶으면 쓰는 신문법.// 기존방식 let array = ['Kim', 20]; let name = array[0]; let age = array[1];
// 신문법 let [name, age] = ['Kim', 20]
왼쪽 오른쪽 형식을 똑같이 맞추면 자동으로 알아서 변수가 생성된다. 이것이 변수만들 때 쓰는 destructuring 문법이다.
Array
, Object
아무거나 다 넣을 수 있다. 많은 자료를 한번에 저장하고 싶으면 Array, Object 자료형으로 넣으면 좋다.import React, { useState } from 'react'; import './App.css' function App(){ let [title, setTitle] = useState( ['스릴러 영화 추천', '쌈밥 맛집 추천'] ); // state의 기본값을 배열(`[ ]`)로 저장했다. return ( <div className="App"> <div className="black-nav"> <div>개발 blog</div> </div> <div className="list"> <h3>{ title[0] }</h3> // state를 꺼내쓰려면 배열이므로 indexing으로 담아준다 <p>2월 17일 발행</p> <hr/> </div> <div className="list"> <h3>{ title[1] }</h3> // state의 1번째 요소(='쌈밥 맛집 추천') <p>2월 17일 발행</p> <hr/> </div> </div> ) }
변수로 데이터를 저장 후, 변수명을 중괄호({ }
)로 감싸서 데이터를 전달할 수 있지만 굳이 state로 만들어서 데이터바인딩 하는 이유는?
👉 변수가 변경될 때 자동으로 관련된 HTML을 재렌더링되게 만들고 싶기 때문에
예를들어, 버튼 생성 후 버튼을 누르면 수정사항이 자동으로 웹페이지에 스무스하게 반영되게 만들고 싶을 수 있다.
그럴 때, state를 사용하면 state가 포함된 HTML을 자동으로 재렌더링 해줄 수 있다.
🪓 리액트는 state가 수정이 일어나면 state가 포함된 HTML을 자동으로 재렌더링 해준다.
(변수를 사용하면 새로고침해야만 내용이 업데이트된다)
🪓 state는 상품명, 글제목, 가격 이런것 처럼 자주 변하는 데이터들을 저장하시는게 좋은 관습이다. (로고처럼 안바뀌는 데이터는 그냥 하드코딩)