리액트 컴포넌트는 클래스, 함수형 두 가지 방법이 있다.
리액트 hooks를 사용하는 함수형이 더 간단하다.
컴포넌트 = 부품 -> 다른 곳에서 가져다 쓸 수 있음
JSX는 HTML과 유사하지만 다른 점이 있다.
가져오기 할 때는 import
내보내기 할 때는 export
root 다음에 오는 div를 삭제하고 싶다면? <Fragment> or <>로 묶어주면 된다.
import { Fragment } from "react";
function App() {
const number = 1;
const double = () => {
return number * 2;
};
return (
<Fragment>
<div>{double(number)}</div>
<button>Submit</button>
</Fragment>
);
}
export default App;
import { Fragment } from "react";
function App() {
const printHello = () => {
console.log("hello");
};
return (
<Fragment>
<button onClick={printHello}>Submit</button>
</Fragment>
);
}
export default App;
import { Fragment } from "react";
function App() {
let number = 1;
const double = () => {
number = number * 2;
console.log(number);
};
return (
<Fragment>
<div>{number}</div>
<button onClick={double}>Submit</button>
</Fragment>
);
}
export default App;
console 창에서는 변수의 값이 2배가 되는데 화면에 나타나는 값은 바뀌지 않는다.
리액트 컴포넌트는 변수가 바뀐다고 렌더링되지 않는다.
렌더링 되는 경우??
리액트 hooks의 useState 사용하면 화면에 업데이트된다.
일반 변수 사용하면 안 되고, useState 사용하기
import { Fragment, useState } from "react";
function App() {
const [number, setNumber] = useState(1);
const double = () => {
setNumber(number * 2);
console.log(number);
};
return (
<Fragment>
<div>{number}</div>
<button onClick={double}>Submit</button>
</Fragment>
);
}
export default App;
여러 개의 state 도 렌더링이 한 번 일어난다.
import { Fragment, useState } from "react";
function App() {
const [number, setNumber] = useState(1);
const double = () => {
setNumber((prevState) => prevState * 2);
setNumber((prevState) => prevState * 2);
};
return (
<Fragment>
<div>{number}</div>
<button onClick={double}>Submit</button>
</Fragment>
);
}
export default App;
public 폴더의 index.html에 붙여 넣는다.
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
<button className="btn btn-primary" onClick={double}>
Submit
</button>
파란색 버튼으로 바뀐다.
[리액트] 블로그 포스트 생성 폼 만들기 (0) | 2023.10.12 |
---|---|
[리액트] 구구단 만들기 (0) | 2023.10.05 |
[리액트를 다루는 기술 1~2장] 요약 정리+스터디 문제 (0) | 2023.09.20 |