๊ด€๋ฆฌ ๋ฉ”๋‰ด

Daehyunii's Dev-blog

์ปดํฌ๋„ŒํŠธ ํŠน์ง•๋“ค ๋ณธ๋ฌธ

๐Ÿ“š Language & CS knowledge/React

์ปดํฌ๋„ŒํŠธ ํŠน์ง•๋“ค

Daehyunii 2022. 12. 22. 03:23
ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ์™€ ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ์˜ ์ฐจ์ด์ 

1. ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ์˜ ๊ฒฝ์šฐ state ๊ธฐ๋Šฅ, ๋ผ์ดํ”„ ์‚ฌ์ดํด ๊ธฐ๋Šฅ์˜ ์‚ฌ์šฉ ๋ฐ ์ž„์˜ ๋ฉ”์„œ๋“œ ์ •์˜๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

2. ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ์˜ ๊ฒฝ์šฐ ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ์— ๋น„ํ•ด ๋ฉ”๋ชจ๋ฆฌ ์ž์›์„ ๋œ ์‚ฌ์šฉํ•œ๋‹ค.(์œ ์˜๋ฏธํ•œ ์ฐจ์ด๋Š” ์•„๋‹ˆ๋ผ๊ณ  ํ•จ)

3. ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋ฐฐํฌํ•  ๋•Œ ๊ฒฐ๊ณผ๋ฌผ์˜ ํŒŒ์ผ ํฌ๊ธฐ๊ฐ€ ๋” ์ž‘๋‹ค.(์œ ์˜๋ฏธํ•œ ์ฐจ์ด๋Š” ์•„๋‹ˆ๋ผ๊ณ  ํ•จ)

4. ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ์˜ ๊ฒฝ์šฐ์—๋Š” ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ์—์„œ์˜ ๋ผ์ดํ”„ ์‚ฌ์ดํด ๊ธฐ๋Šฅ ๋Œ€์‹  Hooks๋ฅผ ํ†ตํ•ด ํ•ด๊ฒฐ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

props ๊ธฐ๋ณธ๊ฐ’ ์„ค์ •: defaultProps

  ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ๋กœ ๋ถ€ํ„ฐ prop์„ ์ „๋‹ฌ ๋ฐ›์ง€ ์•Š์€ ๊ฒฝ์šฐ์— defaultProps๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. 

const MyComponent = (props) => {
  return <div>์•ˆ๋…•ํ•˜์„ธ์š”, {props.name}์ž…๋‹ˆ๋‹ค.</div>;
}

MyComponent.defaultProps = {
  name: '์šฐ๋Œ€ํ˜„'
}

 

propTypes๋ฅผ ํ†ตํ•œ props ๊ฒ€์ฆ

  ์ปดํฌ๋„ŒํŠธ์˜ ํ•„์ˆ˜ props๋ฅผ ์ง€์ •ํ•˜๊ฑฐ๋‚˜ props์˜ ํƒ€์ž…์„ ์ง€์ •ํ•  ๋•Œ๋Š” propTypes๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. propTypes๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์šฐ์„  ์ฝ”๋“œ ์ƒ๋‹จ์— import ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ถˆ๋Ÿฌ์™€์•ผ ํ•œ๋‹ค.

import PropTypes from 'prop-types';

const MyComponent = ({name}) => {
  return (...);
};

MyComponent.propTypes = {
  name: PropTypes.string
};

export default MyComponent;

๋งŒ์•ฝ props๊ฐ€ propTypes์—์„œ ์ง€์ •ํ•œ ํ˜•ํƒœ์™€ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด console์ฐฝ์—์„œ ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.

 

isRequired๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•„์ˆ˜ propTypes ์„ค์ •
import PropTypes from 'prop-types';

const MyComponent = ({name}) => {
  return (...);
};

MyComponent.propTypes = {
  name: PropTypes.string.isRequired
};

export default MyComponent;

๋งŒ์•ฝ ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ์—์„œ props๋ฅผ ๋„˜๊ฒจ์ฃผ์ง€ ์•Š์œผ๋ฉด console์ฐฝ์—์„œ ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค. 

 

๊ทธ ์™ธ ํŠน์ง•

  props์™€ state๋Š” ๋‘˜ ๋‹ค ์ปดํฌ๋„ŒํŠธ์—์„œ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๋ Œ๋”๋งํ•  ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด๊ณ  ์žˆ์–ด ๋น„์Šทํ•ด ๋ณด์ผ ์ˆ˜ ์žˆ์ง€๋งŒ, ๊ทธ ์—ญํ• ์ด ๋งค์šฐ ๋‹ค๋ฅด๋‹ค๋Š” ์ ์„ ๊ธฐ์–ตํ•˜์ž. props๋Š” ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์„ค์ •ํ•˜๊ณ  state๋Š” ์ปดํฌ๋„ŒํŠธ ์ž์ฒด์ ์œผ๋กœ ์ง€๋‹Œ ๊ฐ’์œผ๋กœ ์ปดํฌ๋„ŒํŠธ ๋‚ด๋ถ€์—์„œ ๊ฐ’์„ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฐธ๊ณ ๋กœ ๋ฆฌ์•กํŠธ ๊ฐœ๋ฐœํŒ€์—์„œ๋Š” ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ๋กœ ๊ฐœ๋ฐœํ•  ๊ฒƒ์„ ๊ถŒ์žฅํ•œ๋‹ค๋Š” ์ ๋„ ๊ธฐ์–ตํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.