React

[React] 리액트?

쿨키드 2022. 8. 26. 16:46
React
Day 1

리액트 특징
컴포넌트 기반(Component-based)이다
👉🏻 캡슐화된 컴포넌트가 스스로 상태를 관리하고 복잡한 UI도 효과적으로 구성할 수 있음

 


리액트 : 라이브러리

👉🏻 리액트와 뷰는 가상 돔(DOM)을 사용

뷰 : 프레임워크

👉🏻 누가 만들든 똑같은 코드가 나옴=모듈화가 잘됨

스벨트(Svelte) : 가상 돔을 사용하지 않으며 진짜 반응성(Reactive)을 제공


리액트 장점

한 페이지에서 모든 게 이루어진다 👉🏻 새로고침을 하지 않아도 됨

값이 변할 때 html을 바꿔주는 게 필요없음.
웹과 어플을 동시에 만들 수 있음 = 웹앱 프레임워크

리액트 단점

검색이 안됨
초기 로딩이 느림=하나의 파일에 만들기 때문에

 

props(=properties) : 어떠한 값을 컴포넌트에게 전달해줘야 할 때, props 를 사용
state (변수) : innerHTML하는 걸 state가 변경될 때만 함 = 새로고침 없이 다시 그린다.
 
슬라이드를 탭에 넣을 때 none/block(탭을 넣을 때 원래 none.block을 넣음)을 하면 안됨 = visibility로 해야함
 
싱글 페이지 애플리케이션(single-page application, SPA, 스파)은 서버로부터 완전한 새로운 페이지를 불러오지 않고 현재의 페이지를 동적으로 다시 작성함으로써 사용자와 소통하는 웹 애플리케이션이나 웹사이트
 
서버사이드 렌더링(ssr)
클라이언트 사이드 렌더링(csr)
 
리액트는 단방향 데이터
부모->자식 (가능)
자식->부모(불가능)
 
 
 
 
react01👉🏻 프레임워크
node_modules 👉🏻 라이브러리
실제 작업 폴더👉🏻 src
이미지같은 건👉🏻 public에 넣음



👉 nonscript는 자바스크립을 실행할 수 없는 웹페이지에서 뜨는 메시지

<div id = "root"></div> = html은 하나다.
id는 root 하나만 있으면 되고, className을 사용해서 class지정하면 됨

 


import Test from "./test";
import Nav from "./Nav";

const App = () => {
  // console.log('배고픔') 2번 찍힘
  return (
    <>
      <Test />
      <h1>아이우에오</h1>
      <Nav />
      {/* <h2>나오지말 것</h2> //를 문자로 받기 때문에 주석이 다른 모양임 */}
      <Test />
      <Test />
    </>
  )

}
export default App;


// <Test /> 컴포넌트는 대문자로 써야함 Rule!

<src에서 App.js에 입력한 것>

const Nav = () => {
    return (
        <>
            <ul className="big">
                <li>menu0100</li>
                <li>menu02</li>
                <li>menu03</li>
                <li>menu04</li>
            </ul>
        </>
    )
}

export default Nav;

<src에서 Nav.js 입력>


React에서는 컴포넌트를 만들 때, 대문자를 시작해서 이름을 만든다.
html태그랑 겹치기 때문이다.

그리고 "export default (컴포넌트이름);"과 App.js에서 "import (컴포넌트)"를 해줘야한다.