์ํ๊ฐ์ด ๋ฐ๋๊ฒ ๋๋ฉด์, ํจ์ ์ปดํผ๋ํธ๊ฐ ๋ค์ render๋๋ค๋๊ฒ ์ค์.
๊ทธ๋ฆฌ๊ณ ๋ฐ๋ state๊ฐ์ ๋ฐ์ํ๊ฒ ๋๋ค.
ํด๋์คํ ์ปดํฌ๋ํธ state, setState
ํจ์ํ ์ปดํฌ๋ํธ useState์ ๋ค๋ฅด๊ฒ ํด๋์คํ ์ปดํฌ๋ํธ๋ ์ด๊ธฐ๊ฐ์ ์๋์ฒ๋ผ ์ ์ธํด์ฃผ๊ฑฐ๋, consturctor ๋ฉ์๋๋ก ์ง์ ํด์ค์ผ ํ๋ค.
state๊ฐ์ ์์ ํ๋ ค๋ฉด setState ๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค..
useState์ ๋ค๋ฅด๊ฒ arugment๊ฐ object(๊ฐ์ฒด)์ธ ์ ์ ์ฃผ์ํด์ผ ํจ.
{๋ณ์: "์์ ํ๊ณ ์ถ์ ๊ฐ"} ํ์์ผ๋ก setState ๋ฉ์๋๋ก state๋ฅผ ์์ ํ๋ค.
ํด๋์ค์ด๋ฏ๋ก ํจ์๋ฅผ ํธ์ถํ ๋, this.๋ฅผ ์ถ๊ฐํด ์ค ์ ์ธ์๋ ํฌ๊ฒ ๋ฌ๋ผ์ง ์ ์ด ์๋ค.
// class_say.js
import React, { Component } from "react";
class Say extends Component {
state = {
message: "์ด์์ค์ญ์ผ!",
color: "black",
};
onClickEnter = () => this.setState({ message: "์ฃผ๋ฌธ ์ด๋ป๊ฒ ํด๋๋ฆด๊น์?" });
onClickLeave = () =>
this.setState({ message: "์๋
ํ ๊ฐ์ธ์. ๋ค์์ ๋ต๊ฒ ์ต๋๋ค!" });
render() {
const { color, message } = this.state;
return (
<div>
<button onClick={this.onClickEnter}>์ฃผ๋ฌธ</button>
<button onClick={this.onClickLeave}>ํด์ฅ</button>
<h1 style={{ color }}>{message}</h1>
<button
style={{ color: "red" }}
onClick={() => this.setState({ color: "red" })}
>
๋นจ๊ฐ์
</button>
<button
style={{ color: "blue" }}
onClick={() => this.setState({ color: "blue" })}
>
ํ๋์
</button>
<button
style={{ color: "green" }}
onClick={() => this.setState({ color: "green" })}
>
๋
น์
</button>
</div>
);
}
}
export default Say;
// App.js
import React from "react";
import Say from "./class_say";
function App() {
return <Say />;
}
export default App;
ํด๋์คํ ์ปดํผ๋ํธ๋ฅผ ์๋ฐฐ์์ ์ ๋ชฐ๋๋๋ฐ, ๊ทธ๋ฅ state ์ฐ๋ ๋ฐฉ์์ด ์๋๋ผ ์ปดํผ๋ํธ ์์ฒด๊ฐ ํด๋์ค ์๊ตฌ๋
props๋
๋ถ๋ชจ ์ปดํผ๋ํธ๋ก๋ถํฐ ์ ๋ฌ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ง๋๊ณ ์๋ ๊ฐ์ฒด
์ด๋ค ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ด๋ ๋ชจ๋ ์ ๋ฌ ๊ฐ๋ฅ ( ๋ณ์,state๊ฐ event handler ๋ฑ)
titleColor ์์ฑ์ ๋ง๋ค์๋ค.
props๋ฅผ ์ด์ฉํด์ color๊ฐ์ ์ ๋ฌํ๋ค.
์ ๋ ๊ฒ ์์ฑ์ ๋ง๋ค๋ฉด props ๋ผ๋ ๊ฐ์ฒด์ ์๋์ผ๋ก titleColor ํ๊ณ ์ถ๊ฐ๊ฐ ๋๋๋ณด๋ค.
์์ ์ปดํฌ๋ํธ๋ ๋ถ๋ชจ๊ฐ ์ ๋ฌํ props๋ฅผ ์ธ์๋ก ๋ฐ๋๋ค.
props ๊ฐ์ฒด ์์ ๋ถ๋ชจ๋ก ์ ๋ฌ๋ฐ์ ๋ฐ์ดํฐ๊ฐ key - value ํํ๋ก ๋ด๊ฒจ์๋ค.
props๋ ๋ถ๋ชจ์ ์์ ๊ฐ์ ๊ด๊ณ์์ ์ฐ์ด๋ ๊ฑฐ๊ธฐ ๋๋ฌธ์,
๊ทธ ์ฃผ๊ณ ๋ฐ๋ ์ ํธ(์์ฑ)๋ง ๋ง์ผ๋ฉด ์์ํํ
๋ฐ์ดํฐ ์ค ์ ์๋ค.
๋ถ๋ชจ ์์ ์์๊ฐ ์์ ๋์๋,
์์๊ณผ ์์์ props ์์ฑ๋ง ํต์ผ๋์ด ์ ํธ ์ ๋ฌ๋๋ฉด,
๋ถ๋ชจ์ ์ ๋ณด๊ฐ ํ๊ณ ํ๊ณ ์์ํํ
๊ฐ ์ ์์.
useState() [color,setColor]['red',f]
์ด๋ฐ ํํ๋ฅผ ๊ตฌ์กฐ ๋ถํด ํ ๋น ์ด๋ผ๊ณ ํจ.
์ฝ๊ฒ ์ฌ์ฉํ๊ธฐ ์ํจ.
๋ฐฐ์ด์ ๊ฐ์ ๊ตฌ์กฐ๋ฅผ ๋ถํดํ ๋ค์์ ํ ๋น์ ํด์ค๋ค~ ๋ผ๋ ๊ฐ๋
const arr = [1,2,3];
const [a,b,c] = [1,2,3];
console.log(a,b,c) 1 2 3
//arr[0] arr[1] ์ด๋ ๊ฒ ์ํด๋ ๋จ
//๋ณด๊ธฐ ์ฝ๊ณ ์ฐ๊ธฐ ์ฝ๊ฒ ์ธ ์ ์๋ ์ด ๋ฐฉ๋ฒ์ด ๊ตฌ์กฐ๋ถํด ํ ๋น ์ด๋ผ๊ณ ํจ
const Login=()=>{
const [colors,setColor] = useState("red");
//useState ์์ฒด๋ฅผ ์ฝ์์ฐ์ผ๋ฉด ๊ธธ์ด๊ฐ 2์ธ ๋ฐฐ์ด์ด ๋์จ๋ค.
//์ฒซ๋ฒ์งธ ์์๋ red๊ณ ๋๋ฒ์งธ๋ ํจ์๊ฐ ์ฐํ
//๊ทธ ๊ธธ์ด๊ฐ 2์ธ ๊ฒ๋ค์ด ๊ฐ๊ฐ [color, setColor] ์ด๋ผ๋ ๊ฑฐ์ง
console.log(color) // "red"
//{}๋๊ฐ ์ธ๊ฑด, ์คํ์ผ ์์ฑ ๊ฐ์ฒด + javascript๋๊น
<button onClick={changeColor}> </button>
//onclickํ ๋๋ง๋ค ์ ์ ํจ์ ์คํ
// ์์ ์์๋ ๋ฐ๋ก ๋ฃ์. ๋ฐ๋ก ์ ์ธ ์ํ๊ณ .
// ๋ฐ๋ก ์ ์ธ ์ํ๊ณ ๊ทธ๋ฅ ์์๋ค ์ง์ ๋ฃ์ผ๋ฉด ๊ทธ๋ฅ ํ๋ฒ ์ฐ์๋๋ง ์งํํ๋ค.
(์ง์ง ์ค์ํ๊ฑฐ - > ํจ์์ ๊ดํธ ๋ฃ์ผ๋ฉด ์ฆ์ ์คํ์ ์๋ฏธํ๋ค.)
setcolor ์ด๋ผ๋ ๊ฑด ์ ๊ธฐํ๊ฒ, setcolor์ ์ด์ฉํ๋ฉด, ์ ์ฒด ํจ์๋ฅผ ํ๋ฒ ๋ ๋๋ฆฐ๋ค.(์ฌ๋ ๋๋ง)
๋ถ๋ชจ ์ปดํฌ๋ํธ์์ ์์ ์ปดํฌ๋ํธ๋ก ๋ญ๊ฐ ์ ๋ณด๋ฅผ ๋๊ฒจ์ค ๋ ์ฐ๋ ๊ฐ๋ ์ด props ๋ค.
์ ๋ณด ์ ๋ฌ์ ํ๋ฐฉํฅ. ๋ถ๋ชจ์์ ์์์ผ๋ก.
props๋ฅผ ์ฐ์ผ๋ฉด ๊ฐ์ฒด๊ฐ ๋์จ๋ค.