μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Python
- 리μ‘νΈ
- μΉνμ΄μ§λ§λ€κΈ°
- μ±
- νλ‘κ·Έλλ°
- μ€λΌν΄
- Kλ°°ν°λ¦¬
- μλ°μ€ν¬λ¦½νΈ
- νμ΄μ¬
- μ€λΈμ
- μΉνΌλΈλ¦¬μ±
- λ μ
- λ°μ΄ν°λ² μ΄μ€
- Java
- μ»΄ν¨ν°κ³Όν
- database
- ν°μ€ν 리μ±λ¦°μ§
- κ°λ°
- Kλ°°ν°λ¦¬λ 볼루μ
- μν
- λ§μΌλ΄κ°μΈμμλ€μμ°λ€λ©΄
- html
- JavaScript
- λΌνλΌμ€μλ§λ
- μλ°
- ComputerScience
- css
- μ½λ©
- λ°μν
- κΉλ―Έκ²½μλ§νμμ
- Today
- Total
JiYoung Dev π₯
[React] Component, Props, State (2023.05.16) λ³Έλ¬Έ
terminal λͺ λ Ήμ΄
npm : μ΄λ―Έ μ€μΉκ° λμ΄μμ μμ΄λ₯Ό μ¬μ©ν λ (ex. terminal start)
npx : μ€μΉκ° λμ΄μμ§μλ κ²μ μ¬μ©ν λ (ex. npx create-react-app project02)
μ’ λ£ : ctrl + C
β project ν΄λ ꡬμ±
node_modules : νμν μ₯μΉλ€
public : μ μ μΈ νμΌ / μ΄λ―Έμ§, html, json, text λ±
src : js, css λ± λμ μΌλ‘ λμ νκΈ° μν΄ νμν μΉκ΅¬λ€
π μ»΄ν¬λνΈ
리μ‘νΈλ νλ©΄μμ UI μμλ₯Ό ꡬλΆν λ 'μ»΄ν¬λνΈ'λΌλ λ¨μλ₯Ό μ¬μ©ν¨
컀λ€λ λ¨μ, κ°λ°μκ° μ»€μ€ν ν μ μλ μ΅μ λ¨μ (κΈ°λ₯λ³ νΉμ νμ΄μ§λ³λ‘ λ§λλ κ²½μ°κ° λ§μ)
λ΄κ° μνλ νκ·Έλ€μ λͺ¨μμ νλμ λ¨μλ‘ λ§λ€μ΄μ€λ€.
react λ¬Έλ² μμ±μ μ μ©ν λꡬ
π μ»΄ν¬λνΈ μμ±
μ»΄ν¬λνΈλ ν΄λμ λ°λ‘ κ΄λ¦¬
μ»΄ν¬λνΈ λ§λ€ λ κΌ λλ¬Έμλ‘ μμ! - 리μ‘νΈμ νλ μμν¬μ μΈ μ±κ²©
(μλ¬Έμλ‘ μμνλ HTML νκ·Έ(DOM μμ)μ ꡬλΆνκΈ° μν΄!)
νμ₯μλ jsλ‘ ν΄λ μκ΄ μμ.
μμ (import), μμΆ(export default) μμ μ΄ νμ!
β props
μμ μ»΄ν¬λνΈμμ νμ μ»΄ν¬λνΈλ‘ κ°μ 보λ΄μ€ λ μ¬μ©
μμ μ»΄ν¬λνΈμμλ μμ± = "κ°"
νΉμ λ³μ λ§λ€μ΄μ μμ± = {λ³μ}
νμ μ»΄ν¬λνΈμμλ 맀κ°λ³μμ κ°μ λ°μμλ€
λ°μ μ μλ Case1) 맀κ°λ³μμ props => props.name
Case2) 맀κ°λ³μμ {name, gender} => name ** λΉκ΅¬μ‘°ν ν λΉ κ°λ
κ°μ²΄ λΉκ΅¬μ‘°ν ν λΉ
λ³μμ μμ±μ΄λ¦μ΄ κ°λ€λ©΄ νλμ λ¨μ΄λ‘ μ¬μ© κ°λ₯
let props = {
name=""
price=""
}
let {name, price} = {
name=""
price=""
}
AppExample.js νμΌμμ MemberBox μ»΄ν¬λνΈ λμ΄μ°κΈ°
// rafce(react arrow function export component) + Enter : λ¨μΆν€
import React from "react";
import "./App.css";
import MemberBox from "./components/MemberBox";
const AppExample = () => {
/* μ¬λ¬λΆμ νμμ μκ°ν΄μ£ΌμΈμ!
μ΄λ¦ : νκΈΈλ
μ±λ³ : μ¬μ±/λ¨μ±
μ’μνλ λ
Έλ : μμ΄λΈ - I AM
λ¨, Componentμ propsμ κ°λ
μ μ΄μ©ν κ²
- MemberBox λΌλ μ»΄ν¬λνΈλ₯Ό μμ±νκΈ°
νΉμ, λ무 빨리 λλ΄λ²λ¦° μ¬λμ λμμΈνκ³ μκΈ°!
*/
let { man, woman } = {
man: "λ¨μ±",
woman: "μ¬μ±",
};
return (
<div>
<MemberBox name="μ μ§μ" gender={woman} song="μ§μ - κ½"></MemberBox>
<MemberBox
name="μνλ‘"
gender={woman}
song="λ΄μ§μ€ - Hypeboy"
></MemberBox>
<MemberBox name="κΉμ μ" gender={man} song="λ΄μ§μ€ - ditto"></MemberBox>
<MemberBox
name="μμ"
gender={man}
song="μμ΄μ - μ λͺ»λλλ°€μλΉλλ΄λ¦¬κ³ "
></MemberBox>
</div>
);
};
export default AppExample;
MemberBox μ»΄ν¬λνΈ
const MemberBox = ({name, gender, song})=>{
return(
<div className="member-box">
<div id="name">{name}</div>
<div>{gender}</div>
<div>{song}</div>
</div>
)
}
export default MemberBox
λ΄κ°λ§λ μ»΄ν¬λνΈμλ μ§μ μ μΌλ‘ λμμΈμ μ ν μ μμ
μ»΄ν¬λνΈ λ΄ html μμμ λμμΈμ μ£Όλ©΄ λ¨
β state
λ³νκ° μμΌλ©΄ νλ©΄μ λ°λ‘ λ λλ§ ν΄μ€μΌ ν λ μ¬μ©
import {useState} from 'react'
const [λ³μμ΄λ¦, setλ³μμ΄λ¦] = useState(μ΄κΈ°κ°)
import React from "react";
import { useState } from "react";
const Ex01 = () => {
/* React Event
1. onClick = {ν¨μμ΄λ¦}
μ΄λ, JSμ²λΌ ()λ₯Ό λ€μ λΆμ΄λ©΄ λ°λ‘ νΈμΆ
{()=>{ν¨μμ΄λ¦()}} λ μ¬μ© κ°λ₯
2. DOM μμμλ§ μ΄λ²€νΈλ₯Ό κ±Έμ΄μ€ μ μλ°.
λ΄κ° λ§λ μ»΄ν¬λνΈμλ μ΄λ²€νΈλ₯Ό κ±Έ μ μμ
*/
/* State
- μ»΄ν¬λνΈ λ΄λΆμμ κ΄λ¦¬νλ λ³κ²½μ΄ κ°λ₯ν λ°μ΄ν°
- λ³μμ λ€λ₯Έμ ? νλ©΄μ λ λλ§λλ€λ μ
JSμμ κ°μ΄ λ³νλ κ³Όμ μ μκ°νλ©΄ λ§μ§λ§μ νλ©΄μ λ λλ§μ μμΌμ€μΌ ν¨
=> useStateλΌλ ν¨μλ₯Ό μ¬μ©ν΄μ€κ²!
const [λ³μμ΄λ¦, setλ³μμ΄λ¦] = useState(μ΄κΈ°κ°)
- λ³μμ΄λ¦
- setλ³μμ΄λ¦ : λ³μμ΄λ¦μ μμ ν΄μΌν λ μ¬μ©ν ν¨μ μ΄λ¦
num = 2(X) => λ³μλ§ λ°λ, νλ©΄μ κ·Έλλ‘
setNum(2) (O) => νλ©΄κΉμ§ κ°μ΄ κ°μ΄ λ³ν
- useState : import μμ
μ΄ νμν¨
import {useState} from 'react'
*/
let num = 0;
const [num2, setNum2] = useState(0);
const plus = () => {
num += 1;
console.log("νμ¬ μ«μλ : ", num);
setNum2(num2 + 1);
};
const minus = () => {
setNum2(num2 - 1);
};
return (
<div>
<p>λ¨μ λ³μ : {num}</p>
{/* νλ©΄ λλλ§κΉμ§ μ΄μ΄μ§μ§ μμ -> useState() μ¬μ©νλ μ΄μ */}
<p>state : {num2}</p>
<button onClick={plus}>+1</button>
{/* μκ΄νΈλ₯Ό μ°κ²λλ©΄ νμ΄μ§κ° μ€νλ λλ§λ€ μλμΌλ‘ ν¨μκ° νΈμΆλ¨ */}
<button
onClick={() => {
setNum2(num2 - 1);
// μ΅λͺ
ν¨μ
}}
>
-1
</button>
</div>
);
};
export default Ex01;
μ€λ₯ κ΄λ ¨ μ 리
리μ‘νΈλ 3000 ν¬νΈ μ¬μ©
μ΄ κ²½μ° μλ²κ° 2κ° λμκ°λ μ€ (μ€λ₯Έμͺ½ node 2κ°)
μ€νμ€μΈ μλ²λ₯Ό μ’ λ£νκ±°λ (Ctrl + C)
νΉμ Yλ₯Ό λλ¬μ μλ‘μ΄ ν¬νΈλ‘ μλ‘μ΄ μλ²λ₯Ό μ€ννκ±°λ
'full stack > React' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[React] useRef (2023.05.24) (0) | 2023.05.24 |
---|---|
[React] To-do List λ§λ€κΈ° (2023.05.23) (0) | 2023.05.24 |
[React] context API (2023.05.22) (0) | 2023.05.22 |
[React] React λ³΅μ΅ (κ°λ ~ context APIκΉμ§) (2023.05.22) (0) | 2023.05.22 |
[React] React κ°μ λ° μ€μΉ, JSX λ¬Έλ² (2023.05.15) (1) | 2023.05.16 |