Hoon2 2022. 7. 31. 21:06
728x90

State

๋™์ ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ๋•Œ State ์‚ฌ์šฉ, props ์ฒ˜๋Ÿผ App ์ปดํฌ๋„ŒํŠธ์˜ ๋ Œ๋”๋ง ๊ฒฐ๊ณผ๋ฌผ์— ์˜ํ–ฅ์„ ์ฃผ๋Š” ๋ฐ์ดํ„ฐ

State ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์œผ๋ฉด ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ƒ์„ฑํ• ๋•Œ constructor ํ•จ์ˆ˜๋ฅผ ์ ์–ด์ค€๋‹ค. ์ปดํฌ๋„ŒํŠธ ์ƒ์„ฑ์ž์—์„œ super๋ฅผ ํ˜ธ์ถœํ•˜๊ธฐ ์ „์—๋Š” this๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ !

class App extends Component {
  constructor(props) {
    super(props);
      this.state={
      Subject:{title:'WEB',sub:'hello World!'}
    }
  }
  render() {
    return (
      	<div className="App">
        <Subject 
        	title={this.state.subject.title} 
    		sub={this.state.subject.sub}>
        </Subject>
      </div>
    );
  }
}

์ฆ‰, ์ปดํฌ๋„ŒํŠธ์˜ ์‹œ์ž‘ ๋ถ€๋ถ„์— constructor()์ด๋ผ๋Š” ํ•จ์ˆ˜๊ฐ€ ์ปดํฌ๋„ŒํŠธ์˜ ์ดˆ๊ธฐํ™”๋ฅผ ์‹œ์ผœ์ค˜์•ผ State์— ๊ฐ’์„ ๋„ฃ์–ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

setState

 setState()๋Š” ์ปดํฌ๋„ŒํŠธ์˜ state ๊ฐ์ฒด์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค. state๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด, ์ปดํฌ๋„ŒํŠธ๋Š” ๋ฆฌ๋ Œ๋”๋ง์ด ๋œ๋‹ค.

 

Props

props๋Š” ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ž์‹ ์ปดํฌ๋„ŒํŠธ์— ๊ฐ’์„ ์ „๋‹ฌ ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

 

*์˜ˆ์‹œ 

import React, { Component } from 'react';

class MyName extends Component {
  static defaultProps = {
    name: '์ด๋ฆ„'
  }

  render() {
    return (
      <div>
         ์ด๋ฆ„์€ <b>{this.props.name}</b> ์ž…๋‹ˆ๋‹ค.
      </div>
    )
  }
}

export default MyName;

import React, { Component } from 'react';
import MyName from './MyName';

class App extends Component {
  render() {
    return <MyName name ="์šฐ์ข…ํ›ˆ" />;
  }
}

export default App;

* state์™€ props์˜ ์ฐจ์ด์ ?

props (“properties”์˜ ์ค„์ž„๋ง) ์™€ state ๋Š” ์ผ๋ฐ˜ JavaScript ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค. ๋‘ ๊ฐ์ฒด ๋ชจ๋‘ ๋ Œ๋”๋ง ๊ฒฐ๊ณผ๋ฌผ์— ์˜ํ–ฅ์„ ์ฃผ๋Š” ์ •๋ณด๋ฅผ ๊ฐ–๊ณ  ์žˆ๋Š”๋ฐ, ํ•œ ๊ฐ€์ง€ ์ค‘์š”ํ•œ ๋ฐฉ์‹์—์„œ ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. props๋Š” (ํ•จ์ˆ˜ ๋งค๊ฐœ๋ณ€์ˆ˜์ฒ˜๋Ÿผ) ์ปดํฌ๋„ŒํŠธ์— ์ „๋‹ฌ๋˜๋Š” ๋ฐ˜๋ฉด state๋Š” (ํ•จ์ˆ˜ ๋‚ด์— ์„ ์–ธ๋œ ๋ณ€์ˆ˜์ฒ˜๋Ÿผ) ์ปดํฌ๋„ŒํŠธ ์•ˆ์—์„œ ๊ด€๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

 

๋ฆฌ๋ Œ๋”๋ง ๋ฐœ์ƒ ์กฐ๊ฑด

  1. state ๋ณ€๊ฒฝ์ด ์žˆ์„ ๋•Œ,
    • ์œ ๋™์ ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด state๋ผ๋Š” ๊ฒƒ์„ ์ด์šฉํ•œ๋‹ค. ์ด๋•Œ state ๊ฐ’์„ ๋ฐ”๊ฟ”์ฃผ๊ธฐ ์œ„ํ•ด์„œ๋Š” setState ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•ด์•ผ ํ•œ๋‹ค. ์ด์œ ๋Š” ๋ฆฌ์•กํŠธ๊ฐ€ state ๋ณ€๊ฒฝ์ด ๊ฐ์ง€๋˜๋ฉด ๋ฆฌ๋ Œ๋”๋ง์„ ํ•ด์ฃผ๋Š”๋ฐ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์ง์ ‘ ๋ฐ”๊ฟ”์ฃผ๋ฉด ๊ฐ์ง€๋ฅผ ๋ชปํ•œ๋‹ค.
  2. ์ƒˆ๋กœ์šด props๊ฐ€ ๋“ค์–ด ์˜ฌ๋•Œ,
    • ์ „๋‹ฌ๋ฐ›์€ props ๊ฐ’์ด ์—…๋ฐ์ดํŠธ ๋ฌ๋‹ค๋ฉด ๋ฆฌ ๋ Œ๋”๋ง์ด ๋œ๋‹ค.
  3. ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ Œ๋”๋ง ๋ ๋•Œ
    • ์ƒˆ๋กœ์šด props๊ฐ€ ๋“ค์–ด์˜ค์ง€ ์•Š๋”๋ผ๋„ ๋ถ€๋ชจ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ฆฌ๋ Œ๋”๋ง์ด ๋œ๋‹ค๋ฉด ์ž์‹์ปดํฌ๋„ŒํŠธ ์—ญ์‹œ ๋ฆฌ๋ Œ๋”๋ง์ด ๋œ๋‹ค.
  4. shouldComponentUpdate์—์„œ true๊ฐ€ ๋ฐ˜ํ™˜ ๋ ๋•Œ
  5. forUpdate๊ฐ€ ์‹คํ–‰ ๋ ๋•Œ
728x90