[TIL] Day30
[SEB FE] Day30
์ด์ ๊ตฌํํ๋ ๊ธฐ๋ฅ์ +
select๋ฅผ ํ์ฉํ ํํฐ๋ง ๊ธฐ๋ฅ
๊ณผํธ์ delete ๊ธฐ๋ฅ
๊ตฌํ์ ์งํํ๋ค.
ํ์ด๋ถ ์บ๋ฆฌ๋ก ํ ์ฌ์ฉ์์ ๋ ๊ฐ ์ด์์ ํธ์ ์ค ํ๋์ ํธ์๋ง ์ญ์ ํ์ ๊ฒฝ์ฐ select์ option๋์ name์ด ๊ทธ๋๋ก ๋จ์์์ด์ผ ํ๋๋ฐ ์ง์์ ธ ๋ฒ๋ฆฌ๋ ๋ฌธ์ ๋นผ๊ณค ํด๊ฒฐํ๋ค.
์์ง ์๋ฒฝํ๊ฒ ์ฝ๋ ์ดํด๋ฅผ ๋ชปํด์ ์ข ๋ ๊ณต๋ถํ ํ์ ์ฝ๋ ์ดํด ๊ณผ์ ์ ๋ํด ์ ๋ฆฌํด์ผ๊ฒ ๋ค.
์ฝ๋๋ ๋ง ์ง์ ๋ณต์กํ๋ค๊ณ ํด์ผํ๋,, ์ฝ๋ ๋ฆฌํฉํ ๋ง ๊ณผ์ ๋ ๋งค์ฐ ํ์ํ๋ค. ๐ซ
๊ณ์ ๋ฏธ๋ฃจ๋ค๊ฐ ํ์ ์ ํ ์๋ ์์ผ๋ ์ด๋ฒ์ฃผ ๋ด๋ก ๊ผญ๊ผญ ํ์,,๐ช
์ข ํฉ Quiz ํ๊ณ ํท๊ฐ๋ ธ๋ React ๊ด๋ จ ๊ฐ๋ ์ ๋ฆฌ
React์์ ์ด๋ฒคํธ ์ฒ๋ฆฌ์ ์ด๋ฒคํธ์ ์ ๋ฌํ๋ ๊ฐ์ ํจ์์ฌ์ผ ํจ.
์ด๋ฒคํธ ์ด๋ฆ์ camelCase๋ก ์ค์
์ด๋ฒคํธ ํธ๋ค๋ฌ๋ props๋ก ์ ๋ฌ ๊ฐ๋ฅ
React์์ ์ปดํฌ๋ํธ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ ๋ Props
์ฌ์ฉ
useState๋ state๋ฅผ ํจ์ ์ปดํฌ๋ํธ ์์์ ์ฌ์ฉ ๊ฐ๋ฅ
useState๋ฅผ ์ฌ์ฉํด์ ์๋ก์ด state๋ฅผ ์ ์ธํ ๋ [count, setCount]
์ฒ๋ผ ๋ฐฐ์ด๋ก ๊ตฌ์กฐ ๋ถํด ํ ๋นํ์ฌ ์ฌ์ฉ
useState()์ ์ ๋ฌ์ธ์๋ useState๊ฐ ๋ฐํํ๋ ๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ ์์๋ก ๋๊ฒจ์ฃผ๋ ์ด๊ธฐ ์ํ ๊ฐ๋ก ํ๋๋ง ์ ๋ฌ ๊ฐ๋ฅ
const Hello = (props) => <div> {props.name}</div>
name
props๋ฅผ ์ ๋ฌํ๋ ๋ฐฉ๋ฒ
๐โโ๏ธย A:
// ์ฌ์ค ๋๋ ์ ๋ชจ๋ฅด๊ฒ ์ด์ ๋๋์ผ๋ก 1๋ฒ์ด ํ๋ ธ๋ค๊ณ ์๊ฐํ๋๋ฐ ์๊ณ ๋ณด๋ ๊ทธ๋ฅ ํจ์์๋ ๊ฒ,,
// ์์ง๋ ์์ ์ดํด๊ฐ ๊ฐ์ง ์๋๋ค๐ฅฒ ํจ์๋ฅผ ์์ ์์ฌ๋ก ์ฌ์ฉํ ์ ์๋๋ก ํ๊ธฐ!
// 1. ํจ์ ์ ์ธ์
funtion Say() {
return (
<Hello name="Beanxx" />
)
}
----------
// 2. ํจ์ ํํ์
const Say = () => <Hello name={"Beanxx"} />
----------
// 3. name ๋ณ์์ ๊ฐ ํ ๋น ํ ์ ๋ฌ
function Say() {
const props = {
name: "Beanxx"
};
return <Hello {...props} />;
}
----------
// โ wrong example
// Syntax Error
const Say = () => <Hello props={name: "Beanxx"} />
// React์์ select๋ฅผ useState๋ก ์ํ ๊ด๋ฆฌ -> ๋ ๋๋ง
import React, { useState } from "react";
function SelectFruit() {
const [choice, setChoice] = useState("apple");
const fruits = ["apple", "orange", "pineapple", "strawberry", "grape"];
const options = fruits.map((fruit, idx) => {
return <option key={idx} value={fruit}>{fruit}</option>;
});
// event handler - ์ ํ๋ ๊ณผ์ผ๋ก state ๊ฐฑ์ => ์ ํ๋ ๊ณผ์ผ์ด state ๋ณ์์ ๋ด๊ฒจ ๊ฐฑ์
const handleFruit = (event) => {
// target ์์ฑ์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ์๋ฆฌ๋จผํธ ์ ๋ณด๊ฐ ๋ด๊ฒจ์์
setChoice(event.target.value);
};
return (
<div className="container">
{/* <select/>: Form ์๋ฆฌ๋จผํธ์ ํ๋๋ก ์ฌ์ฉ์ ์
๋ ฅ๊ฐ ์ ์ดํ๋๋ฐ ์ฃผ๋ก ์ฌ์ฉ */}
<select onChange={handleFruit}>{options}</select>
<h3>You choose "{choice}"</h3>
</div>
);
}
// ์ด๋ฒคํธ ํธ๋ค๋ฌ ์ ์ ๋ฐฉ๋ฒ
const App = () => {
const [number, setNumber] = useState(0);
// 1๋ฒ์งธ ๋ฐฉ๋ฒ. ๋ณ์๋ก ์ ์ธํ ํ onClick์ ๋ณ์๋ฅผ ๋๊ฒจ์ฃผ๋ ๋ฐฉ๋ฒ
const plusNumber = () => setNumber(number + 1);
return (
<div>
<button onClick={plusNumber}>Plus<button>
{/* 2๋ฒ์งธ ๋ฐฉ๋ฒ. JSX ๋ด์ onClick์ ๋ฐ๋ก ํจ์ ์ ์ */}
<button onClick={() => setNumber(number => number - 1)}>Plus<button>
</div>
)
}