React์์ ํ๋์ ์ปดํฌ๋ํธ๋ ํ ๊ฐ์ง ์ผ์ ํ๋๊ฒ ์ด์์ ์ธ ์์น์ด๋ค.
๋ํ ์ํ๊ฐ ๋ง์์ง์๋ก ์ ํ๋ฆฌ์ผ์ด์
์ ๋ณต์กํด์ง๊ธฐ ๋๋ฌธ์ ์ํ๋ ์ต์ํํ๋ ๊ฒ์ด ์ข๋ค.
๋ง์ผ ํ๋์ ์ํ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ ์ปดํฌ๋ํธ๊ฐ ์ํฅ์ ๋ฐ๋๋ค๋ฉด,
์ด ๋ ์์(๋ ์ปดํฌ๋ํธ)์ ๊ณตํต ๋ถ๋ชจ ์ปดํฌ๋ํธ์ ์ํ๋ฅผ ์์น์์ผ์ผ ํ๋ค.
โ๏ธ์ฐธ๊ณ ) ํ์ ์ปดํฌ๋ํธ๋ ์์ ์ปดํฌ๋ํธ๋ก๋ถํฐ ์ ๋ฌ๋ฐ์ ๋ฐ์ดํฐ๊ฐ state๋ก๋ถํฐ ์๋์ง, ํ๋์ฝ๋ฉ์ผ๋ก ์
๋ ฅ๋ ๋ด์ฉ์ธ์ง ์์ง ๋ชปํ๋ค.
<FormattedDate date={this.state.date} />
-----
/* FormattedDate */
function FormattedDate(props) {
return <h2>It is {props.date.toLocaleTimeString()}.</h2>;
}
์์ ์ปดํฌ๋ํธ์ ์ํ ๋ณ๊ฒฝ ํจ์๋ฅผ ํ์ ์ปดํฌ๋ํธ๋ก ์ ๋ฌํ๋ฉด,
์ด ํจ์๋ฅผ ํ์ ์ปดํฌ๋ํธ๊ฐ ์คํํ๋ค.
import React, { useState } from "react";
export default function ParentComponent() {
const [value, setValue] = useState("๋ ๋ฐ๊ฟ์ค!");
const handleChangeValue = () => {
// ๊ฐ ๋ณ๊ฒฝ
setValue("์์ ํ ๋ฌ๋ผ์ง ๊ฐ");
};
return (
<div>
<div>๊ฐ์ {value} ์
๋๋ค</div>
// ์ฌ์ฉ์ ์ ์ ์ปดํฌ๋ํธ์ props.handleButtonClick์
// handleChangeValueํจ์๋ฅผ ๋ฃ์ด์ค.
<ChildComponent handleButtonClick={handleChangeValue}/>
</div>
);
}
function ChildComponent({ handleButtonClick }) {
const handleClick = () => {
// ํจ์ ํธ์ถ
handleButtonClick()
};
return <button onClick={handleClick}>๊ฐ ๋ณ๊ฒฝ</button>;
} // ๋ฒํผ์ ํด๋ฆญํ๋ฉด "๋ ๋ฐ๊ฟ์ค!" => "์์ ํ ๋ฌ๋ผ์ง ๊ฐ"์ผ๋ก ๋ณ๊ฒฝ๋๋ค.
---------------------------
function ParentComponent() {
const [value, setValue] = useState("๋ ๋ฐ๊ฟ์ค!");
const handleChangeValue = (newValue) => {
// ๋ณ๊ฒฝ ๊ฐ์ผ๋ก ํจ์ ์ธ์๋ฅผ ๋ฐ์
setValue(newValue);
};
// ...์๋ต...
}
function ChildComponent({ handleButtonClick }) {
const handleClick = () => {
// ์ธ์ ๊ฐ์ ๋ฃ์ ์ํ ํธ์ถ
handleButtonClick('์์์ด ์ํ๋ ๊ฐ์ ๋๊ฒจ์ค๊ฒ')
}
return (
<button onClick={handleClick}>๊ฐ ๋ณ๊ฒฝ</button>
) // ๋ฒํผ์ ํด๋ฆญํ๋ฉด "๋ ๋ฐ๊ฟ์ค!" => "์์์ด ์ํ๋ ๊ฐ์ ๋๊ฒจ์ค๊ฒ"๋ก ๋ณ๊ฒฝ๋๋ค.
}
โ State๊ฐ ์๋ ๊ฒฝ์ฐ?
๋ถ๋ชจ๋ก๋ถํฐ props๋ฅผ ํตํด ์ ๋ฌ๋๋ ๊ฒฝ์ฐ,
์๊ฐ์ด ์ง๋๋ ๋ณํ์ง ์๋ ๊ฒฝ์ฐ(์ ์ ์ผ ๋),
์ปดํฌ๋ํธ ์์ ๋ค๋ฅธ state๋ props๋ฅผ ๊ฐ์ง๊ณ
๊ณ์ฐ ๊ฐ๋ฅํ ๊ฒฝ์ฐ์๋ State๊ฐ ์๋๋ค. (ex. ํํฐ๋ง๋ ๋ชฉ๋ก์ state๊ฐ ์๋๋ค.)
๐ ๋ ๋ง์ ์ดํด๋ฅผ ํ๊ณ ์ถ๋ค๋ฉด?
๐ (๊ณต์๋ฌธ์)State์ ์๋ช
์ฃผ๊ธฐ ์ค ๋ฐ์ดํฐ๋ ์๋๋ก ํ๋ฅธ๋ค.
๐ (๊ณต์๋ฌธ์)React๋ก ์๊ฐํ๊ธฐ