npx create-react-app [폴더명]
cd [폴더명]
npm start
하면, [폴더명]디레고리에 React프로젝트가 생성되며,
실행후, http://localhost:3000 주소를 통해 실행결과 확인할 수 있다.
npx
: 라이브러리 설치를 도와주는 명령어npm start
로 시작해주면, 브라우저에서 바로 띄울 수 있음src/App.js
내용을 => src/index.js
가 => public/index.html
에 넣어줌 (virtual DOM)node.js 먼저 설치하는 이유 : create-react-app
라이브러리를 사용하기 위해 / npm 과 더불어 /
node_modules
: 설치한 라이브러리를 전부 모아 놓은 폴더
public
: satic 파일 보관함 (이미지 등)
src
: 소스코드 보관함
package.json
: 설치한 라이브러리와, 버전을 모아놓은 폴더
사이트는 codesandbox.io
위 사진에서 Tweet 태그가 willy's life로 보인다.
각각 어떻게 렌더링 될까?
컴포넌트는 JavaScript 함수와 유사
Component를 통해 UI를 재사용 가능한 개별적인 여러 조각으로 나누고, 각 조각을 개별적으로 살펴볼 수 있다.
Component에는 props라는 존재가 있다.
Props는 속성을 나타내는 데이터
name = "이정은"
을 name propscontent = "나의 새 코딩"
을 content props일단, Component란? HTML을 반환하는 함수
Component를 만들고, 데이터를 보여주기
import React from "react"
로 importexport default Potato
로 exportimport Potato from "./Potato"
해당파일을 import한 후,<Potato />
형식으로 붙여줌react의 강점은 "재사용 가능한 Component"를 만들 수 있다는 점 (it means, Component를 계속해서 반복 사용할 수 있다는 의미)
Component -> Component / Component -> Children Component
Food Component에 name이라는 이름의 property를 "토마토"라는 value로 준 것!
props object 내부에는, name이라는 키가 있다
예) console.log(props) {name: "토마토"}이런식으로
인자를 넣는 방법 아래 두 방법은 똑같이 동작한다.
npm install prop-types
setState()
호출을 한꺼번에 처리할 수 있음class App extends React.Component {}
이 안에!React.Component
는 내부에 많은 것을 담고 있음extends from React.Component
한 이유 : 매번 component를 만들 때마다, 모든 것을 계속 구현할 수 없음. App Component
는 React Class Component
로부터 기본적인 것들을 모두 가져올 수 있음 (계속)return
을 가지고 있지 않음render
method를 가지고 있음Class Component
의 render
메소드를 실행함return
함 / 스크린에 표시됨React Component
로부터 확장되며 스크린에 표시됨 / 그것을 render method
state는 object
component의 데이터를 넣을 공간이 있으며, 데이터는 변할 수 있음
state의 상태를 변경할 때 : react가 render function
을 호출하기를 원하지만 매번 가져오지 않으며, 직접 바꿀 수도 없도록 되어 있음
setState function
을 호출setState
를 호출할 때마다, react는 새로운 state와 함께 render function을 호출한다.life cycle method
는 기본적으로 react가 component를 생성하고, 수정하고, 없애는 일련의 방법render
, constructor
는 비동기 불가)render()
는 React.Component
의 하위 class에서 반드시 정의해야 하는 메서드constructor()
render()
componentDidMount()
render()
componentDidUpdate()
componentWillUnmont()
여기부터 다시
render 메소드
또는 lifecycle 메소드
에는 binding 필요 X / 다른 컴포넌트로 pass되지 않기 때문git init
git remote add origin [repo주소]
git status
로 확인 후git add .
로 변경된 파일들 저장git push origin master