๋ณธ๋ฌธ์œผ๋กœ ๋ฐ”๋กœ๊ฐ€๊ธฐ

1. ์ปดํฌ๋„ŒํŠธ

1) ๊ธฐ๋Šฅ์„ ๋‹จ์œ„๋ณ„๋กœ ์บก์Аํ™”ํ•˜๋Š” ๋ฆฌ์•กํŠธ์˜ ๊ธฐ๋ณธ ๋‹จ์œ„

2) ์‚ฌ์šฉ์ž๊ฐ€ ๋ณด๋Š” ๋ทฐ๋Š” ์ปดํฌ๋„ŒํŠธ๋“ค์„ ์กฐํ•ฉํ•˜์—ฌ ๋งŒ๋“ ๋‹ค.

3) ํ•จ์ˆ˜ ํ˜น์€ ํด๋ž˜์Šค๋กœ ๋งŒ๋“ ๋‹ค.

4) ์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ์—์„œ props๋ฅผ ์ž…๋ ฅ๋ฐ›๊ณ , ๋‚ด๋ถ€์ ์œผ๋กœ ๊ฐ์ž์˜ state๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค.

5) ์ปดํฌ๋„ŒํŠธ์˜ ์ด๋ฆ„์€ ๋Œ€๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•œ๋‹ค.

์ปดํฌ๋„ŒํŠธ: <App />, <Milk />

import React from "react";
import ReactDOM from "react-dom";
import App from "./App";
import Milk from "./Milk";

ReactDOM.render(
  <React.StrictMode>
    <App />
    <Milk />
  </React.StrictMode>,
  document.getElementById("root")
);

์ปดํฌ๋„ŒํŠธ๋Š” ๋ฐ˜๋“œ์‹œ ํ•˜๋‚˜์˜ ํƒœ๊ทธ๋งŒ ๋ฆฌํ„ดํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์ตœ์ƒ์œ„ ํƒœ๊ทธ ์•ˆ์— ํƒœ๊ทธ/์ปดํฌ๋„ŒํŠธ๋“ค์„ ๋ฐฐ์น˜ํ•œ๋‹ค.

 

2. State

- ๋ณ€์ˆ˜ ๋Œ€์‹  ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ ์ €์žฅ๊ณต๊ฐ„

- ์ปดํฌ๋„ŒํŠธ์˜ ๋™์  ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์„ ๊ณต๊ฐ„
- state๋Š” ๋ฌธ์ž, ์ˆซ์ž, array, object ๋“ฑ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์ž์œ ๋กญ๊ฒŒ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๊ณ , ๋ฐ์ดํ„ฐ ์ˆ˜์ •๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.
- ์ž์ฃผ ๋ฐ”๋€Œ๊ณ  ์ค‘์š”ํ•œ ๋ฐ์ดํ„ฐ๋Š” state๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

-์™ธ๋ถ€์—์„œ ์•Œ ํ•„์š” ์—†๋Š” ์ •๋ณด๋ฅผ ์€๋‹‰ํ•˜๋Š” ์šฉ๋„๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

- F5์—†์ด๋„ html์ด ์ž๋™์œผ๋กœ ์žฌ๋ Œ๋”๋งํ•˜๋Š” ์ฃผ์ฒด๋‹ค.


1) setState()

- state๋Š” ์ง์ ‘ ์ˆ˜์ •ํ•˜์ง€ ์•Š๋Š”๋‹ค. setState()๋ฅผ ์ด์šฉํ•˜์—ฌ ์ˆ˜์ •ํ•œ๋‹ค.

- setState๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด, ์ƒˆ state์™€ ํ•จ๊ป˜ render function์ด ํ˜ธ์ถœ๋˜์ง€ ์•Š๋Š”๋‹ค.

  • setState๋Š” Virtual DOM์„ ํ†ตํ•ด state๊ฐ€ ๋ฐ”๋€ ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ์—…๋ฐ์ดํŠธํ•œ๋‹ค.
  • setState๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ๋งˆ๋‹ค, ์ƒˆ๋กœ์šด state์™€ ํ•จ๊ป˜ render ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.
  • props๋กœ state๋ฅผ ์ „๋‹ฌํ–ˆ์œผ๋ฉด, ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ๋„ ๋™์ผํ•˜๊ฒŒ renderํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋œ๋‹ค.

 

 

2) ํ˜„์žฌ ๊ฐ’์„ ๊ธฐ๋ฐ˜์œผ๋กœ State๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ์ฝœ๋ฐฑํ•จ์ˆ˜๋ฅผ ํ™œ์šฉํ•œ๋‹ค.

- setState์— ๋ฐ”๋กœ ๊ฐ’์„ ๋„ฃ์ง€ ์•Š๊ณ , ์ฝœ๋ฐฑํ•จ์ˆ˜๋ฅผ ๋„ฃ์–ด์ฃผ๋Š” ์ด์œ ๋Š” setState๊ฐ€ ๋น„๋™๊ธฐ๋กœ ์ฒ˜๋ฆฌ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๋Ÿฌ ๋ฒˆ ํ˜ธ์ถœํ•˜๋ฉด ์ฒ˜๋ฆฌ ์ˆœ์„œ๊ฐ€ ๋ฐ”๋€” ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

const [count, setCount] = useState(0);

setCount((current) => {
  return current + 1
})

 

 

3. Props

 

1) prop๋Š” ์ฝ๊ธฐ ์ „์šฉ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋‹ค.

this.props.title = "์ œ๋ชฉ์ด ๋ฐ”๋€Œ์—ˆ์Šต๋‹ˆ๋‹ค." // โŒ

 

2) ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ์—์„œ props ๋ฐ›์•„์˜ค๊ธฐ

- ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ์˜ ์ฒซ๋ฒˆ์งธ ์ธ์ž๋Š” props๋ฅผ ๋ฐ›๋Š”๋‹ค.

- {} curly bracket์„ ์‚ฌ์šฉํ•ด props์•ˆ์— ์žˆ๋Š” ๋ณ€์ˆ˜๋“ค์„ ๋ฐ”๋กœ ๋ฐ›์•„์˜จ๋‹ค.

function IntroduceComponent({ name, picture, rating }) {
  return (
    <div>
      <h2>I am {name}.</h2>
      <img src={picture} alt="์‚ฌ์ง„" height="200px" width="200px"></img>
      <h4>{rating}/5</h4>
    </div>
  );
}

 

3) ์ƒํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ๊ฐ„ ํ†ต์‹  ์˜ˆ์‹œ

<div className='App'>
      <SubComponent
        data={this.state.data}
        onChange={(e) => {
          this.setState({ data: e.target.value });
        }}
      />
</div>

- ์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ์—๊ฒŒ ๋ช…๋ นํ•  ๋•Œ๋Š” props๋ฅผ ์ด์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌ

- ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ์—๊ฒŒ ๋ช…๋ นํ•  ๋•Œ๋Š” props์˜ ๊ฐ’์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— (setStateํ•จ์ˆ˜๋ฅผ ๋‹ด์€) ์ด๋ฒคํŠธ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

๋ฐ˜์‘ํ˜•