[React] State

2021. 9. 27. 08:00ใ†Front-End ์ž‘์—…์‹ค/Vue.js

728x90
๋ฐ˜์‘ํ˜•

 

๐Ÿ“Œ State


State๋Š” Props์™€ ๋น„๊ตํ•ด์„œ ๊ณต๋ถ€๋ฅผ ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์ด์—์š”.

์ œํ’ˆ์„ ๊ธฐ์ค€์œผ๋กœ ์ด์šฉ์ž์˜ ์ž…์žฅ์ด ์žˆ๊ณ , ์ด๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ์ œ์ž‘์ž ์ž…์žฅ์ด ์žˆ์„ ๊ฒƒ์ด์—์š”. ์˜ˆ๋ฅผ ๋“ค์–ด ํ•ธ๋“œํฐ์˜ ๊ฒฝ์šฐ ๋ฒ„ํŠผ๋“ค์ด ์žˆ์„๊ฑด๋ฐ, ์ด๊ฒƒ์„ UI (User Interface)๋ผ๊ณ  ํ•˜๊ณ , ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฆฌ์—‘ํŠธ์—์„œ๋Š” ์ด์šฉ์ž๊ฐ€ ์ด์šฉํ•˜๋Š” ์žฅ์น˜ ์ฆ‰, UI๋ผ๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ์ œํ’ˆ์„ ๋งŒ๋“œ๋Š” ์‚ฌ๋žŒ๋“ค์€ ๋‚ด๋ถ€์ ์ธ ๊ตฌํ˜„์„ ์œ„ํ•ด ๋‹ค์–‘ํ•œ ์ƒํƒœ๋“ค, ๋‚ด๋ถ€์  ์กฐ์ž‘์žฅ์น˜๋“ค์„ ๊ฐ€์ง€๊ณ  ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ์ด๊ฑธ State๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ต๋‹ˆ๋‹ค.

์ฆ‰, ์ด์šฉ์ž๊ฐ€ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ๊ด€์ ์„ ๋งž์ถ˜๊ฒƒ์ด Props์ด๊ณ , ์ œํ’ˆ์„ ๋งŒ๋“œ๋Š” ์‚ฌ๋žŒ๋“ค์˜ ๊ด€์ ์— ๋งž์ถ˜๊ฒƒ์ด State๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ต๋‹ˆ๋‹ค.

์ปดํฌ๋„ŒํŠธ์— props๋ฅผ ์ด์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์€ ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ๋ณด์•˜์„ ๋•Œ,

๋ฐ˜์‘ํ˜•
<Component props_name = "props_value">



๊ฐ€ ์žˆ๋‹ค๋ฉด props๋ฅผ ํ†ตํ•ด ์ปดํฌ๋„ŒํŠธ๋ฅผ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Props๋Š” ์ด์šฉ์ž์—๊ฒŒ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ •๋ณด์ธ ๊ฒƒ์ด์—์š”.

์ปดํฌ๋„ŒํŠธ ๋‚ด๋ถ€์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ๋“ค์„ State๋ผ๊ณ  ํ•˜๊ณ , ์ด์šฉ์ž๋Š” ์ด๋ฅผ ์•Œ์•„์„œ๋„ ์•ˆ๋˜๊ณ , ์•Œ ํ•„์š”๋„ ์—†๋‹ต๋‹ˆ๋‹ค.

๊ฒฐ๊ตญ State์™€ Props๋Š” ์ฒ ์ €ํ•˜๊ฒŒ ๋ถ„๋ฆฌ๋˜์–ด์•ผ ํ•œ๋‹ต๋‹ˆ๋‹ค.

 

 

 

์ปดํฌ๋„ŒํŠธ๊ฐ€ ์‹คํ–‰ ๋  ๋•Œ, Constructor๋Š” ์ดˆ๊ธฐํ™”๋ฅผ ํ•  ๋•Œ ์‚ฌ์šฉ์„ ํ•˜๋Š”๋ฐ, render() ๋ณด๋‹ค ๋จผ์ € ์‹คํ–‰์ด ๋˜๋ฉด์„œ ๊ทธ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ดˆ๊ธฐํ™” ์‹œ์ผœ์ฃผ๊ณ  ์‹ถ์€ ์ฝ”๋“œ๋Š” ์ด Constructor ์•ˆ์—๋‹ค๊ฐ€ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ๋œ๋‹ต๋‹ˆ๋‹ค.

Constructor ๊ธฐ๋ณธ ํ‹€

Constructor(props) {
  super(props);

  // ์ฝ”๋“œ ์ž‘์„ฑ

}
Constructor(props) {
  super(props);
  this.state = {
      subject:{title:'Web', sub:'World Wide Web!'}
  }
}



์œ„์˜ this.state ์•ˆ์— subject๋ผ๋Š” ์ปดํฌ๋„ŒํŠธ์— title์€ web์ด๊ณ , sub๋Š” World Wide Web์œผ๋กœ ์„ค์ •ํ•œ๋‹ค๋Š” ๋œป์ด๋‹ค.

์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ (Constructor)์—์„œ ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ 

            <div className="App">
                {/* Stateํ™” ํ•˜๊ธฐ ์ „ ์ฝ”๋“œ */}
                {/*<Subject title="WEB" sub="word wide web!"></Subject>*/}

                {/*Stateํ™” ํ•œ ๋’ค ์ฝ”๋“œ*/}
                <Subject title={this.state.subject.title} sub={this.state.subject.sub}></Subject>
                <Nav></Nav>
                <Content title="HTML" desc="HTML is HyperText Markup Language."></Content>
            </div>



(์œ„์˜ Subject Tag๋กœ ์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ ๋‚ด์šฉ์„ ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ์˜ props๋กœ ์ „๋‹ฌ)๋กœ ๋‚ด์šฉ์„ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์€ ์–ผ๋งˆ๋“ ์ง€ ๊ฐ€๋Šฅ

์˜ˆ๋ฅผ ๋“ค์–ด ์ž๋™์ฐจ์— ์—”์ง„์ด ํ•ญ์ƒ ๋ณด์ด๊ฒŒ ํˆญ ํŠ€์–ด ๋‚˜์™€์žˆ๋‹ค๋ฉด ์ด์šฉ์ž๋Š” ์—”์ง„์„ ์•Œ ํ•„์š”๊ฐ€ ์—†๋Š”๋ฐ, ์ด๊ฒŒ ๊ณผ์—ฐ ์ข‹์€ ์ œํ’ˆ์ผ๊นŒ์š”? ์•„๋‹ˆ์—์š”!

์ด์šฉํ•˜๋Š” ์ชฝ๊ณผ ๊ตฌํ˜„ํ•˜๋Š” ์ชฝ์„ ์ฒ ์ €ํžˆ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ข‹์€ ์ œํ’ˆ์ด๊ณ , ๋ฆฌ์—‘ํŠธ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ธ ๊ฒƒ์ด์—์š”.

 

 


 

์ฃผ๋‹ˆํ•˜๋ž‘์˜ ๊ธ€์ด ๋งˆ์Œ์— ๋“œ์…จ๋‚˜์š”? ๊ตฌ๋…๊ณผ ๊ณต๊ฐ! ๊ทธ๋ฆฌ๊ณ , ๋Œ“๊ธ€ ๊ทธ๋ฆฌ๊ณ  ๋ฐฉ๋ช…๋ก์€ ์ฃผ๋‹ˆํ•˜๋ž‘์—๊ฒŒ ๋งŽ์€ ํž˜์ด ๋ฉ๋‹ˆ๋‹ค

728x90
๋ฐ˜์‘ํ˜•