* ๋ ธ๋ง๋์ฝ๋ ๊ฐ์ ์ ๋ฆฌ ๊ธ ์ ๋๋ค.
ReactJS๋ก ์ํ ์น ์๋น์ค ๋ง๋ค๊ธฐ – ๋ ธ๋ง๋ ์ฝ๋ Nomad Coders
React for Beginners
nomadcoders.co
STATE 1
- ์ด์ ๊ฐ์์ ์ด์ด์ ๊ณ์
- ๋ฒํผ์ ๋๋ฅด๋ฉด ์ซ์๊ฐ ์นด์ดํธ ๋๋ ํ๋ก๊ทธ๋จ์ ๋ง๋๋ ์ค
1. React.js (๋ฆฌ๋ ๋๋ง ํ๋ ๋ฐฉ๋ฒ)
- ์ฐ๋ฆฌํํ ์ด๋ค๊ฒ ํ์ํ๊ณ , ์ด๋ค๊ฑธ ํด์ผํ๋์ง ์ดํดํ๊ธฐ ์ํด ์ ์ข์ ๋ฐฉ๋ฒ๋ถํฐ ์์
<!DOCTYPE html>
<html>
<body>
<div id="root"></div>
</body>
<script src="https://unpkg.com/react@17.0.2/umd/react.production.min.js"></script>
<script src="https://unpkg.com/react-dom@17.0.2/umd/react-dom.production.min.js"></script>
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
<script type="text/babel">
const root = document.getElementById("root");
let counter = 0;
function countUp() {
counter = counter + 1;
}
const Container = () => (
<div>
<h3>Total clicks : {counter}</h3>
<button onClick = {countUp}>Click me</button>
</div>
);
ReactDOM.render(<Container />, root);
</script>
</html>
- ์ด๋ ๊ฒ ์ฝ๋๋ฅผ ์ง๊ณ ์คํํ๊ฒ ๋๋ฉด
์ค์ ๋ก counter์ ๊ฐ์ ์ฆ๊ฐํ์ง๋ง UI๊ฐ ์ ๋ฐ์ดํธ ๋์ง ์์ 0์ผ๋ก ๋ณด์ธ๋ค.
(์ด์ ๋ ์ปดํฌ๋ํธ๋ฅผ ๋จ ํ ๋ฒ๋ง ๋ ๋๋ง ํ๊ณ ์๊ธฐ ๋๋ฌธ)
- ๋์์ ์ดํด๋ณด๋ฉด,
1. ์ดํ๋ฆฌ์ผ์ด์ ์คํ โ ํ์ด์ง ๋ก๋
2. countUp(), Container()๋ ํจ์์ด๊ธฐ ๋๋ฌธ์ ๋ฐ๋ก ์คํ๋์ง ์๊ณ
ReactDOM.render(<Container />, root); ๋ผ์ธ์ด ์คํ๋จ
(์ด ๋ counter๋ 0์ด๊ธฐ ๋๋ฌธ์ 0์ ๋ก๋ํ๋ค)
3. ๋ฒํผ์ ๋๋ฅด๋ฉด counter๋ฅผ 1์ฉ ์ฆ๊ฐ ์ํจ๋ค.
4. countUp() ํจ์๊ฐ ๋์ํ๊ณ ๋๋ฉด,
๋ฆฌ๋ ๋๋ง์ด ํ์ํ๋ฐ ์ด๋์๋ ํ๋ ๊ณณ์ด ์๋ค.
function countUp() {
counter = counter + 1;
render();
}
function render() {
ReactDOM.render(<Container />, root);
}
- render()์ด๋ผ๋ ํจ์๋ฅผ ๋ง๋ค๊ณ , countUp()์์ ์คํ ์์ผ์ฃผ๋๋ก ์์ ํ์๋ค.
- ์ด์ ์ ์์ ์ผ๋ก ๋์ํ์ง๋ง ์ด ๋ฐฉ๋ฒ์ ๋ค๋ฅธ ํจ์๊ฐ ์ถ๊ฐ๋๋ฉด,
๊ฑฐ๊ธฐ์๋ ๊ณ์ render๋ฅผ ํด์ฃผ์ด์ผํ๋ฏ๋ก ์ข์ ๋ฐฉ๋ฒ์ ์๋๋ค.
๐ ์ฐ์ ์ด๋ ๊ฒ๋ง ํด๋ณด๊ณ ๋ฒํผ์ ๋๋ฌ๋ณด๋ฉด JS์ React๋ ๋ ธ๋ ๋ณ๊ฒฝ ์ฒ๋ฆฌ ๊ณผ์ ์ด ๋ค๋ฅด๋ค๋ ๊ฑธ ์ ์ ์์.
(์ค๋ช ์ ๊ฐ์ ์ฝ๋ฉํธ ์ฐธ๊ณ - soonseok๋)
* JS์์ ๋ฒํผ ํด๋ฆญ *
* Vanilla JavaScript๋ DOM๋ณ๊ฒฝ์ ์ง์ ์ฒ๋ฆฌํ๋ค.
DOM ๋ณ๊ฒฝ์ด ๋ฐ์ํ๋ฉด, ๋ธ๋ผ์ฐ์ ๋ ๋ณ๊ฒฝ๋ DOM ํธ๋ฆฌ๋ฅผ ๋ค์ ๊ณ์ฐํ๊ณ ,
๋ ๋ ํธ๋ฆฌ๋ฅผ ๋ค์ ์์ฑํ ํ ํ๋ฉด์ ๊ทธ๋ฆฐ๋ค.
์ด ๊ณผ์ ์ ๋น์ฉ์ด ๋ง์ด ๋๋ ์ฐ์ฐ์ผ๋ก, ์์ฃผ ๋ฐ์ํ๊ฒ ๋๋ฉด ์ฑ๋ฅ์ด ์ ํ๋ ์ ์๋ค.
* React์์ ๋ฒํผ ํด๋ฆญ *
* ReactJS๋ DOM ๋ณ๊ฒฝ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ๊ฐ์ DOM(Virtual DOM)์ด๋ผ๋ ๊ฐ๋ ์ ๋์ ํ๋ค.
์ํ ๋ณ๊ฒฝ์ด ๋ฐ์ํ ๋๋ง๋ค ์๋ก์ด ๊ฐ์ DOM ํธ๋ฆฌ๋ฅผ ์์ฑํ๊ณ ,
์ด์ ์ ๊ฐ์ DOM ํธ๋ฆฌ์ ๋น๊ตํ์ฌ ๋ณ๊ฒฝ๋ ๋ถ๋ถ์ ํ์ ํ๋ค.
์ด๋ ๊ฒ ํ์ ๋๋ ๋ณ๊ฒฝ ์ฌํญ๋ง ์ค์ DOM์ ๋ฐ์ํ๋ ๋ฐฉ์์ ์ฌ์ฉํ๋ค.
๊ฐ์ DOM์ ์ฌ์ฉํจ์ผ๋ก์จ, ๋ณ๊ฒฝ์ด ํ์ํ ์ต์ํ์ ์์๋ง ์ค์ DOM์ ๋ฐ์๋๊ธฐ ๋๋ฌธ์
๋ถํ์ํ ์ฐ์ฐ์ ์ค์ด๊ณ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์๋ค.
2. React.JS (useState ์ฌ์ฉ)
<!DOCTYPE html>
<html>
<body>
<div id="root"></div>
</body>
<script src="https://unpkg.com/react@17.0.2/umd/react.production.min.js"></script>
<script src="https://unpkg.com/react-dom@17.0.2/umd/react-dom.production.min.js"></script>
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
<script type="text/babel">
const root = document.getElementById("root");
const App = () => {
const [counter, setCounter] = React.useState(0);
const onClick = () => {
setCounter(counter + 1);
}
return (
<div>
<h3>Total clicks : {counter}</h3>
<button onClick={onClick}>Click me</button>
</div>
)
};
ReactDOM.render(<App />, root);
</script>
</html>
- useState๋ฅผ ์ฌ์ฉํ๋ฉด ์ํ๊ฐ์ด ๋ณ๊ฒฝ๋์ ๋ ํด๋น ์ปดํฌ๋ํธ๋ฅผ ๋ฆฌ๋ ๋๋งํ๊ณ ๋ณ๊ฒฝ๋ ์ํ๊ฐ ํ๋ฉด์ ๋ฐ์๋จ.
๐ useState
const data = React.useState(0);
console.log(data);
* useState๋ ์ปดํฌ๋ํธ ๋ด์์ ์ํ๋ฅผ ์ถ๊ฐํ๊ณ ๊ด๋ฆฌํ๊ธฐ ์ํ Hook์ด๋ค.
* console์ ๋ณด๋ฉด useState์ ์ด๊ธฐ๊ฐ๊ณผ ๊ฐ์ ๋ฐ๊พธ๋ ํจ์๊ฐ ์๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
data์ ๊ฐ์ ์ถ๋ ฅํ๊ธฐ ์ํด์ data[0] ์ผ๋ก ํํํ ์ ์์ผ๋ฉฐ, ํจ์๋ฅผ ์ถ๋ ฅํ ๋ data[1] ๋ก ํํํ ์ ์๋ค.
* ๋งค๋ฒ data[0], data[1] ๋ก ๊บผ๋ด๋ ๊ฒ ๋ณด๋ค๋ ๋ณ์์ ํ ๋นํ์ฌ ๊บผ๋ด์ฃผ๋๊ฒ ์ข์ ๋ฐฉ๋ฒ์ผ ๊ฒ์ด๋ค.
๊ทธ๋์ state๋ฅผ ์ฌ์ฉํ ๋๋ ์๋์ฒ๋ผ ์ฌ์ฉํ๋ค.
const [counter, setCounter] = React.useState(0);
* ์๋๋ ๊ตฌ์กฐ ๋ถํด ํ ๋น ๋ฌธ๋ฒ ์์์ด๋ค.
const numbers = [1,2,3];
console.log(numbers[0]) // 1
console.log(numbers[1]) // 2
console.log(numbers[2]) // 3
const [a,b,c] = numbers;
console.log(a) // 1
console.log(b) // 2
console.log(c) // 3
๋ค์ ๊ฐ์์ ๊ณ์!
'IT > React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ์ ํฌ๊ธฐ๋ก ์๋ผ ๋จน๋ ๋ฆฌ์กํธ] - React.js ์ ๋ฌธ 2 (1) | 2024.11.22 |
---|---|
[ํ์ ํฌ๊ธฐ๋ก ์๋ผ ๋จน๋ ๋ฆฌ์กํธ] - React.js ์ ๋ฌธ 1 (1) | 2024.11.19 |
[ํ์ ํฌ๊ธฐ๋ก ์๋ผ ๋จน๋ ๋ฆฌ์กํธ] - React.js ๊ฐ๋ก (1) | 2024.11.15 |
[ํ์ ํฌ๊ธฐ๋ก ์๋ผ ๋จน๋ ๋ฆฌ์กํธ] - Node.js ๊ธฐ์ด (5) | 2024.11.01 |
[React] ReactJS๋ก ์ํ ์น ์๋น์ค ๋ง๋ค๊ธฐ (The BASICS OF REACT) (0) | 2024.02.21 |