Vanilla JavaScript
- 자바스크립트만으로 작성한 언어로 간단한 FE 코드를 작성하는 것은 다수의 코드양이 필요하다.
- 자바스크립트의 코드가 길어질수록 에러를 내재할 확률이 높아지기 때문에, 유지 보수가 어렵다.
- 따라서, React가 이를 보완하기 위해 JSX위주의 프로그램 방식을 채택하였다.
Node.js 설치
- 리액트 프로젝트에서 원할한 서버 구축을 위한 웹서버 프로그램
- 리액트 프로젝트 만든 후, 디렉토리 접근한다.
- npm create vite@latest (프로젝트이름)
cd (프로젝트이름)- 테스트용 서버 설치 및 실행
npm install
npm run dev
vite
- 리액트 프로젝트의 디렉토리 구조를 만들어 주는 툴
프로그램의 모든 실행을 위한 구성단위로 함수로 표현한다.
function App (){
state(); // state로 변수 선언
return; // return 키워드안에 JSX코드
}
| 웹페이지 | 역할 | 리액트 |
|---|---|---|
| HTML | 뼈대 | 컴포넌트의 JSX |
| CSS | 살 | CSS |
| JavaScript | 내장기관 | JavaScript |
return (
<div>
<Header />
<main>
<h2>시작해봅시다!</h2>
</main>
</div>
);
{ } 안에 자바스크립트 표현식을 사용한다.map(), with()등을 사용가능하다.<App />로 랜더링되는 컴포넌트를 표현render()함수가 해당 컴포넌트를 랜더링을 하며 진입을 시작한다.import ReactDOM from "react-dom/client";
import App from "./App.jsx";
ReactDOM.createRoot(
document.getElementById("root")
).render(<App />);
각각의 컴포넌트는
Tree구조로 표현할 수 있다.
- 리액트는 "트리형태의 컴포넌트 구조"를 만든다.
- 컴포넌트의 데이터 접근은
HTML>JS>jsx로 진입한다.
즉, javascript를 통해 리액트 코드를 실행시킨다.
useState는 변경감지시, 랜더링되는 반면,
Ref는 변경감지 되어도 랜더링되지 않는다.
useEffect(() => {
// 실행 구문
return () => {
// 컴포넌트가 사라지기 전에 호출
}
}, [변경감지할 변수]);
그러나, 변경이 감지 될때마다 랜더링이 계송실행되므로 쓸데없는 메모리 낭비 발생할 수 있다. 굳이 알아야 할 필요 없다면, 랜더링 방지할 필요있음
useMemo 사용하면됨
useMemo(()=>{
return
// 랜더링하지 않을 구문
},[랜더링하지 않을 변수]);