2021. 9. 27. 08:00ใFront-End ์์ ์ค/Vue.js
๐ 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๋ก ์ ๋ฌ)๋ก ๋ด์ฉ์ ์ ๋ฌํ๋ ๊ฒ์ ์ผ๋ง๋ ์ง ๊ฐ๋ฅ
์๋ฅผ ๋ค์ด ์๋์ฐจ์ ์์ง์ด ํญ์ ๋ณด์ด๊ฒ ํญ ํ์ด ๋์์๋ค๋ฉด ์ด์ฉ์๋ ์์ง์ ์ ํ์๊ฐ ์๋๋ฐ, ์ด๊ฒ ๊ณผ์ฐ ์ข์ ์ ํ์ผ๊น์? ์๋์์!
์ด์ฉํ๋ ์ชฝ๊ณผ ๊ตฌํํ๋ ์ชฝ์ ์ฒ ์ ํ ๋ถ๋ฆฌํ๋ ๊ฒ์ด ์ข์ ์ ํ์ด๊ณ , ๋ฆฌ์ํธ๋ ๋ง์ฐฌ๊ฐ์ง์ธ ๊ฒ์ด์์.
์ฃผ๋ํ๋์ ๊ธ์ด ๋ง์์ ๋์ จ๋์? ๊ตฌ๋ ๊ณผ ๊ณต๊ฐ! ๊ทธ๋ฆฌ๊ณ , ๋๊ธ ๊ทธ๋ฆฌ๊ณ ๋ฐฉ๋ช ๋ก์ ์ฃผ๋ํ๋์๊ฒ ๋ง์ ํ์ด ๋ฉ๋๋ค
'Front-End ์์ ์ค > Vue.js' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[React] ์ด๋ฒคํธ state props ๊ทธ๋ฆฌ๊ณ render ํจ์ ๊ฐ์ (0) | 2021.10.02 |
---|---|
[React] State์ Props์ ์ฐจ์ด (0) | 2021.10.02 |
[React] Component File ๋ถ๋ฆฌ (0) | 2021.09.26 |
[React] Props (0) | 2021.09.25 |
[React] Component ๋ง๋ค๊ธฐ (0) | 2021.09.24 |