"prop๊ณผ state ๋ชจ๋ ์ด ๊ฐ์ด ๋ณ๊ฒฝ๋๋ฉด ์๋ก์ด ๋ฆฌํด๊ฐ์ ๋ฐ๊พธ์ด์ UI๋ฅผ ๋ฐ๊ฟ๋๋ค. ์ฐจ์ด์ ์ prop์ ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ๋ ์ธ๋ถ์๋ฅผ ์ํ ๋ฐ์ดํฐ๊ณ , state๋ ์ปดํฌ๋ํธ๋ฅผ ๋ง๋๋ ๋ด๋ถ์๋ฅผ ์ํ ๋ฐ์ดํฐ๋ผ๋ ๊ฒ์ ๋๋ค."
> "๋ฐฐ์ด์ returnํ๊ณ , ๋ฐฐ์ด์ 0๋ฒ์งธ ๋ฐ์ดํฐ๋ ์ํ์ ๊ฐ์ ์ฝ์ ๋ ์ฐ๋ ๋ฐ์ดํฐ,
1๋ฒ์งธ ๋ฐ์ดํฐ๋ ๊ทธ ์ํ์ ๊ฐ์ ๋ณ๊ฒฝํ ๋ ์ฐ๋ ํจ์์
๋๋ค."
/*const _mode = useState("welcome");
const mode = _mode[0];
const setMode = _mode[1];*/
// ์ ์ธ์ค์ ์ถ์ฝํ
const [mode, setMode] = useState("welcome");
๐ ์ด๊ธฐ ์
ํ
> import { useState } from "react";
์ฌ์ฉํ ํ์ผ ์๋จ์ import
๐ const [dataName, ํด๋นData์ ๊ฐ์ ๋ณ๊ฒฝํ๋ ํจ์] = useState("dataName์ ์ด๊ธฐ๊ฐ");
๐ ๊ฐ์ ๋ณ๊ฒฝ ํ ๋๋ useState() ์ ๋๋ฒ์งธ ๊ฐ(ํจ์)์ ์ฌ์ฉํด์ผ ํจ
nav๋ฅผ ๋๋ ์ ๋ ๋ด์ฉ์ด ๋ณ๊ฒฝ๋๊ฒ ํ๋ ๊ฒ
function Nav(props) {
const array = [];
for (let i = 0; i < props.list.length; i++) {
let li = props.list[i];
array.push(
<li key={li.id}>
<a
id={li.id}
href={"/read/" + li.id}
onClick={(e) => {
e.preventDefault();
props.onChangeMode(Number(e.target.id));
// ํด๋น id ๊ฐ์ str์ผ๋ก ๋ค์ด์ค๊ธฐ ๋๋ฌธ์ ํ๋จ setMode์์ ์ฌ์ฉํ๋ ค๋ฉด Number๋ก ๋ฐ๊ฟ์ค์ผํฉ๋๋ค.
}}
>
{li.title}
</a>
<p>{li.body}</p>
</li>
);
}
// app
function App() {
const list = [
{ id: 1, title: "one", body: "์ฒซ๋ฒ์งธ ๋ฉ๋ด๋ฅผ ๋๋ฅด๋ฉด ๋์ค๋ฉด ํ์ด์ง" },
{ id: 2, title: "two", body: "๋๋ฒ์งธ ๋ฉ๋ด๋ฅผ ๋๋ฅด๋ฉด ๋์ค๋ ํ์ด์ง" },
{ id: 3, title: "three", body: "์ธ๋ฒ์งธ ๋ฉ๋ด๋ฅผ ๋๋ฅด๋ฉด ๋์ค๋ ํ์ด์ง" },
];
const [mode, setMode] = useState("welcome");
const [id, setId] = useState(null);
let content = null; // ๊ธฐ์กด content ๊ฐ ์ด๊ธฐํ
if (mode === "welcome") {
content = (
<Article article="Welcome" body="header ๋๋ฅด๋ฉด ๋์ค๋ ํ์ด์ง์ผ"></Article>
);
} else if (mode === "read") {
let title,
body = null; // ํด๋น title, body ์ด๊ธฐํ
for (let i = 0; i < list.length; i++) {
if (list[i].id === id) {
title = list[i].title;
body = list[i].body;
}
}
content = <Article article={title} body={body}></Article>;
}
return (
<div className="App">
<Header
title="title ๋ณ๊ฒฝํด๋ณผ๊ฒ"
onChangeMode={() => {
setMode("welcome"); // setMode๊ฐ ๋๋ฆฌ๋ฉด ๋ณ๊ฒฝ๋๋ ๋ฐ์ดํฐ
}}
></Header>
<Nav
list={list}
onChangeMode={(id) => {
setMode("read");
setId(id); //id ๊ฐ์ ๋ง์ถฐ ๋ณ๊ฒฝ๋จ ์ if๋ฌธ ํ์ธ
}}
></Nav>
{content} // ๋ฒํผ์ ๋๋ ์ ๋ body์ ๋ด์ฉ์ด ๋ด๊ธฐ๋ ๋ถ๋ถ
</div>
);
}