WIL

React_State, Props

minnjeong 2023. 4. 23. 23:39

React

 

 

 

 

State

 

๐Ÿ“Œ State๋ž€?

  • ์ปดํฌ๋„ŒํŠธ ๋‚ด์—์„œ ์ง€์†์ ์œผ๋กœ ๋ณ€๊ฒฝ์ด ์ผ์–ด๋‚˜๋Š” ๊ฐ’์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค.
  • ๊ฐœ๋ฐœ์ž๊ฐ€ ์˜๋„ํ•œ ๋™์ž‘์— ์˜ํ•ด ๋ณ€ํ•  ์ˆ˜๋„ ์žˆ๊ณ  ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ์— ๋”ฐ๋ผ ์ƒˆ๋กœ์šด ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝ๋  ์ˆ˜๋„ ์žˆ๋‹ค.
  • State ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜๊ณ  ์žฌ ๋ Œ๋”๋ง์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ์— React๊ฐ€ ์ž๋™์œผ๋กœ ๊ณ„์‚ฐํ•˜์—ฌ ๋ณ€๊ฒฝ๋œ ๋ถ€๋ถ„์„ ๋ Œ๋”๋งํ•œ๋‹ค.

 

 

 

 

๐Ÿ“Œ State๋ฅผ ๋ณ€๊ฒฝํ•˜๊ธฐ

 

State ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฐ˜๋“œ์‹œ setState ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•œ๋‹ค.

setState ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ๋‹ค์‹œ ๋ Œ๋”๋ง ํ•ด๋‹ฌ๋ผ๋Š” ๋ช…๋ น์„ ๋‚ด๋ฆฐ๋‹ค.

const App = () => {
    const [value, setValue] = useState(์ดˆ๊ธฐ๊ฐ’);
    return ~
}

 

 

 

 

 

๐Ÿ“Œ State๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐฉ๋ฒ• 

 

// 1. setState ๋‚ด์— ๋ณ€๊ฒฝํ•  ๊ฐ’์„ ๋„ฃ๋Š”๋‹ค.
const [count, setCount] = useState(0);
setCount(count + 1);
 
// 2. setState์— ํ•จ์ˆ˜๋ฅผ ๋„ฃ๋Š”๋‹ค.
const [count, setCount] = useState(0);
 
setCount((current) => {
    return current + 1
})

ํ•จ์ˆ˜๋ฅผ ๋„ฃ๋Š” ๊ฒฝ์šฐ ํ•จ์ˆ˜๊ฐ€ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฐ’์œผ๋กœ State๊ฐ€ ๋ณ€๊ฒฝ๋œ๋‹ค.

ํ˜„์žฌ ๊ฐ’์„ ๊ธฐ๋ฐ˜์œผ๋กœ State๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฒฝ์šฐ ํ•จ์ˆ˜๋ฅผ ๋„ฃ๋Š” ๋ฐฉ๋ฒ•(๋‘๋ฒˆ์งธ) ๋ฐฉ๋ฒ•์„ ๊ถŒ์žฅํ•œ๋‹ค.

 

 

 


 

 

 

 

๐Ÿ“Œ Props๋ž€?

  • ํ”„๋กœํผํ‹ฐ(properties)์˜ ์ค„์ž„๋ง์ด๋‹ค.
  • ์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ์— ๊ฐ’์„ ์ „๋‹ฌํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
  • ๋‹จ๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ํ๋ฆ„์„ ๊ฐ–๋Š”๋‹ค.
  • ํ”„๋กœํผํ‹ฐ๋Š” ์ˆ˜์ •ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ํŠน์ง•์ด ์žˆ๋‹ค.(์ž์‹ ์ž…์žฅ์—์„œ ์ฝ๊ธฐ ์ „์šฉ์ธ ๋ฐ์ดํ„ฐ์ด๋‹ค)

 

 

 

๐Ÿ“Œ Props ์‚ฌ์šฉ

 

  • App.js์— name์ด๋ผ๋Š” props๋ฅผ "minjeong" ์ด๋ผ๋Š” ๊ฐ’์œผ๋กœ ๋„˜๊ฒจ์ค€๋‹ค.
  • GetName.js์—์„œ name์„ props.name์œผ๋กœ ์‚ฌ์šฉํ•ด์„œ ํ™”๋ฉด์— "hi, minjeong"์ด ์ถœ๋ ฅ๋œ๋‹ค.

 

 

App.js

import React from 'react';
import GetName from "../src/features/counter/GetName.js"

function App() {
  return (
    <div className="App">
      <Reset />
      <GetName name="minjeong" />
    </div>
  );
}

export default App;

 

 

 

GetName.js

import React from 'react'

function GetName(props) {
    return <h1>hi, {props.name}</h1>;
  }
  

export default GetName;

 

๋˜๋Š” ๊ฐ์ฒด์—์„œ ๊ฐ’์„ ์ถ”์ถœํ•˜๋Š”, ๋น„๊ตฌ์กฐํ™” ํ• ๋‹น์œผ๋กœ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์ž‘์„ฑ ๊ฐ€๋Šฅํ•˜๋‹ค.

import React from 'react'

function GetName({props}) {
	// props.name์„ ๋น„๊ตฌ์กฐํ™” ํ• ๋‹น์œผ๋กœ name์œผ๋กœ ์ค„์˜€์Œ!
    return <h1>hi, {name}</h1>;
  }
  

export default GetName;