
ls (위치확인)
cd desktop (이동)
npx create-react-app 폴더명 (scaffolding 생성)
cd 폴더명 (생성한 폴더로 이동)
code . (vscode열기 : 설정필요)

npm install node-sass (사스 다운)
npm install react-router-dom axios prop-types gsap (리액트 실행 시 필요한 요소 한번에 다운로드 : 스펠링 주의)
package.json에서 확인 !
폰트파일 넣을때는 아래 4가지 확장자를 각각 넣어줘야 한다.


    "emmet.includeLanguages": {
        "javascript": "javascriptreact"
      },
      "editor.defaultFormatter": "esbenp.prettier-vscode",
      "[typescriptreact]": {
        "editor.defaultFormatter": "esbenp.prettier-vscode"
      },
      "[typescript]": {
        "editor.defaultFormatter": "esbenp.prettier-vscode"
      },
      "editor.formatOnSave": true,
function Info(props){
	return (
    	<div>{props.text1}</div>
    	<div>{props.text2}</div>
    	<div>{props.text3}</div>
    	<div>{props.text4}</div>
    )
}
function Main(){
  <>
    <main>
      <section className="main__cont">
        <Info
            text1="we provide"
            text2="visual coding"
            text3="solution"
            text4="for you webs"
        />
      </section>
    </main>
  </>
}
        
function Info(???){
	return ( 
    	<div>{props.text1}</div> ????
    	<div>{props.text2}</div>
    	<div>{props.text3}</div>
    	<div>{props.text4}</div>
    )
}
const textInfo = {
  text1: "we provide",
  text2: "visual coding",
  text3: "solution",
  text4: "for you webs",
};
function Main(){
  <>
    <main>
      <section className="main__cont">
        <Info
            text1={textInfo.text1}
            text2={textInfo.text2}
            text3={textInfo.text3}
            text4={textInfo.text4}
        />
      </section>
    </main>
  </>
}
        
function Info({ text }) {
  return <div>{text}</div>;
}
const textInfo = {
  { text: "we provide" },
  { text: "visual coding" },
  { text: "solution" },
  { text: "for you webs" }
};
function Main(){
  <>
    <main>
      <section className="main__cont">
          <div className="main__inner">
            {textInfo.map((txt) => (
              <Info text={txt.text} />
            ))}
          </div>
      </section>
    </main>
  </>
}
        
리액트 컴포넌트를 선언하는 두 가지 방식에는 함수형과 클래스형이 있다. 클래스형 이후에 함수형이 나왔지만, 클래스형을 쓰던 기업의 프로젝트 유지보수를 위해 개념을 알고 있어야 한다. 최근에는 함수형 + 클래스형의 장점을 넣은 리액트 훅을 사용하는 추세이다.
클래스형 컴포넌트는 로직을 컴포넌트 내에서 구현하기 때문에 더 복잡한 UI를 갖게 된다. 반면에, 함수형 컴포넌트는 props로 데이터를 받아서 UI에 뿌려주기 때문에 상대적으로 단순한 형태를 갖게 되며 재사용성이 높다는 장점이 있다.
=> 2019년부터 함수형 컴포넌트에 사용할 수 있는 리액트 훅을 지원하고 있다.