cd 폴더이름
: 폴더로 이동cd ..
: 폴더에서 나올 때dir(윈도우), ls(리눅스)
: 목록 조회npm install 프로그램 이름
npx
: 프로그램을 임시로 설치, 딱 한 번 실행시키고 지우는 도구mkdir 폴더이름
: 폴더 생성create-react-app .
: 폴더구조 생성리액트 : 컴포넌트
C언어 : 함수
함수형 컴포넌트
클래스형 컴포넌트
리액트 프로젝트 생성 (기본 코드 생성)
index.html - index.js - App.js (App컴포넌트) - App.css
~컴포넌트 작성~
npm run build
npm install -g serve
npx serve -s build
빌드 파일 생성 후 서버와 함께 올림
<p>
, <b>
는 기능적인 태그
html5에서는 <header>
, <nav>
와 같은 의미론적인 태그를 사용할 수 있도록 허용됨.
개발자가 이 태그를 보고 어떤 기능인지 알아볼 수 있는 태그
리액트에서 뷰 업데이트 시 '조화과정을 거친다'라고 하는 것이 더 정확한 표현이다.
컴포넌트에서 데이터에 변화가 있을 때 뷰가 변경되는 것처럼 보이지만 사실은 새로운 요소로 갈아끼우는 것이다.
이 작업 또한 render 함수가 맡아서 한다.
Render 함수가 반환하는 결과를 곧바로 DOM에 반영하지 않고, 이전에 render 함수가 만들었던 컴포넌트 정보와 현재 render 함수가 만든 컴포넌트 정보를 비교한다.
두 가지 뷰를 최소한의 연산으로 비교한 후 둘의 차이를 알아내 최소한의 연산으로 DOM 트리를 업데이트 한다.
요즘의 큰 규모의 웹 애플리케이션인 트위터나 페이스북을 생각해보자.
대규모의 웹 애플리케이션이 DOM에 직접 접근하여 변화를 주다 보면 성능 이슈가 발생한다.
이슈 해결법
리액트 매뉴얼 : 지속적으로 데이터가 변화하는 대규모 애플리케이션 구축하기(용도에 맞게 사용하자)
// JSX
function App() {
return (
<div className="App">
{/* <MySubject/>
<MyTopic/>
<MyContent/> */}
Hello <b>react</b>
</div>
);
}
↓ JSX를 바벨이 자바스크립트로 변환
// 자바스크립트
function App(){
return React.createElement("div", null, "Hello",
React.createElement("b", null, "react"));
}
C언어에서의 지역변수는 중괄호를 기준으로 생성되지만, 자바스크립트의 var 타입은 함수기준으로 생성된다.
function myTest()
{
if(true)
{
var val = 100;
alert(val);
}
alert(val)
var val = "TEST";
alert(val);
}
myTest();
따라서 이런 코드가 있을 때 C언어에서는 오류가 나지만, 자바스크립트에서는 작동하는 코드가 된다.
function myTest()
{
if(true)
{
let val = 100;
alert(val);
}
alert(val);
}
myTest();
하지만 let타입을 사용하면 기존의 지역변수와 같은 방식으로 작동한다.
var 타입보다는 let 타입의 사용을 권장한다.
const name = "마이클";
const age = 25;
const height = 180.5;
console.log(`My Name is ${name}
My age is ${age} ,
My height is ${height}`)
템플릿 문자열을 사용하면 개행한 그대로 출력된다.
-
문자가 포함되는 이름이 있는데 이러한 이름은 -
문자를 없애고 카멜표기법으로 작성하여 backgroundColor로 작성.function App() {
const name = "리액트";
const style = {
backgroundColor : 'black',
color : 'aqua',
fontSize : '48px',
fontWeight : 'bold',
padding: 16
}
return (
<div style={style}>
{name}
</div>
);
function App() {
const name = "리액트";
return (
<div className="test">{name}</div>
);
}
.test {
background-color: aqua;
color: black;
font-size: 48px;
font-weight: bold;
padding: 16px;
}
HTML에서는 꼭 닫지 않아도 되는 태그가 있다.
ex) <br>
, <p>
...
JSX에서는 태그를 닫지 않으면 오류가 발생한다.