2021. 10. 2. 08:02ใFront-End ์์ ์ค/Vue.js
๐ ์ปดํฌ๋ํธ ์ด๋ฒคํธ ๋ง๋ค๊ธฐ
return (
// Component๋ฅผ ๋ง๋ค ๋๋ ๋ฐ๋์ ํ๋์ ์ต์์ Tag๋ง (๋ฑ ํ๋) ์จ์ผ ํ๋ค.
<header>
<h1><a href ="/" onClick={function(e) {
e.preventDefault();
this.props.onChangePage();
}.bind(this)}> {this.props.title}</a></h1>
{this.props.sub}
</header>
);
์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค๊ณ , ์ฌ์ฉ์ ์ ์ ์ด๋ฒคํธ๋ฅผ ์คํํ๊ณ ์ถ์ ๋,
<Subject
title={this.state.subject.title}
sub={this.state.subject.sub}
onChangePage =
>
</Subject>
์์ ๊ฐ์ด onChanePage๋ผ๋ ์ด๋ฒคํธ๋ฅผ ๋ง๋ค์ด์ ํน์ ํจ์๊ฐ ํธ์ถ๋๊ฒ ํ ์ ์๋ ๊ฒ์ด์์.
App.js์์ ์์ ๊ฐ์ด onChanePage Event์ ํจ์๋ฅผ ๋ง๋ค๊ณ ,
{/*Stateํ ํ ๋ค ์ฝ๋*/}
<Subject
title={this.state.subject.title}
sub={this.state.subject.sub}
onChangePage = {function () {
alert('hihihi');
}.bind(this)}
>
</Subject>
Subject.js์ ์์ ๊ฐ์ด a Tag๋ฅผ ๋๋ ์ ๋, ํจ์๊ฐ ์คํ๋๋๋ฐ, e.prevenDefulat()๋ก ๋จผ์ Reload๋ฅผ ๋ฐฉ์งํด์ฃผ๊ณ , App.js์ ์๋ onChagePage Event๋ฅผ ํจ์ ํ์์ผ๋ก ํธ์ถํด ์ฃผ๋ ๊ฒ์ด์์.
์ด๋ ๊ฒ ํด์ฃผ๋ฉด WEB์ ํด๋ฆญํ์ ๋, ์ค์ ํด์ค๋๋ก ๊ฒฝ๊ณ ์ฐฝ์ด ๋จ๋ ๊ฒ์ด์์.
<Subject
title={this.state.subject.title}
sub={this.state.subject.sub}
onChangePage = {function () {
this.setState({
mode:'welcome'
});
}.bind(this)}
>
</Subject>
App.js์์ ์ด๋ฒ์๋ setState()์ ๋ชจ๋๊ฐ์ welcome์ผ๋ก ์ฃผ๊ฒ ๋๋ฉด
์ฒ์์๋ ์์ ๊ฐ์ด ๋ณด์ด๋ค๊ฐ WEB์ ํด๋ฆญํ๊ฒ ๋์์ ๋
์์ ๊ฐ์ด ๋ณ๊ฒฝ๋๋ ๊ฒ์ด์์.
๐ก์ฐธ๊ณ : Number() ๋ ๋ฌธ์์ด์ ์ ์๋ก ํ๋ณํ ํด์ค๋ค.
while (i < data.length) {
lists.push(
<li key={data[i].id}>
<a href={"/content/" + data[i].id}
data-id = {data[i].id}
onClick={function (e) {
e.preventDefault();
this.props.onChangePage(e.target.dataset.id);
}.bind(this, data[i].id)}
>{data[i].title}
</a>
</li>
);
i = i + 1;
}
์์ ๊ฐ์ด Nav.js์์ bind ํจ์์ data[i].id๋ฅผ ๋๋ฒ์งธ ๋งค๊ฐ๋ณ์๋ก ์ฃผ๊ฒ ๋๋ฉด onClick์ function ๋งค๊ฐ๋ณ์์ ํ์ฌ๋ e๊ฐ ์์ผ๋, ์ด๊ฒ ๋ค๋ก ํ ์นธ ๋ฐ๋ฆฌ๊ณ , bind์์ ์ค ๋งค๊ฐ๋ณ์๊ฐ ์ฒซ๋ฒ์งธ๋ก ์ค๊ฒ ๋๋ ๊ฒ์ด์์.
props์ state๋ ๋ชจ๋ render()๋ฅผ ํธ์ถํ๋ ๊ฒ์ด์์.
์ฌ์ฉ์์ props๋ก ์ปดํฌ๋ํธ ๋ด์ ์๋ State๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด์ง์. ์ด ์ํ๊ฐ ์ค์ ์น ๋ธ๋ผ์ฐ์ HTML ๋ค๋ฅธ ๋ง๋ก DOM์ด๋ผ๋ ๊ฒ์ ์ํฅ์ ์ค์ ๋ณด์ฌ์ง๋ต๋๋ค!
์ด๋ค ์ปดํฌ๋ํธ๊ฐ ํ์ ์ปดํฌ๋ํธ์ ๊ฐ์ ์ ๋ฌํ๊ณ ์ ํ ๋๋ Props๋ฅผ ํตํด์ ์ ๋ฌํ์ง๋ง, ์์ ์ปดํฌ๋ํธ์๊ฒ ๊ฐ์ ์ ๋ฌํ ๋๋ ์ด๋ฒคํธ๋ฅผ ํตํด์ ์ ๋ฌํ๊ฒ ๋๋ ๊ฒ์ด์์. (Props๋ Read Only์ด๊ธฐ ๋๋ฌธ)
'Front-End ์์ ์ค > Vue.js' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[React] Router Dom (0) | 2021.10.09 |
---|---|
[Reacte] Array์ shouldComponentUpdate() (0) | 2021.10.04 |
[Reacte] Event setState ํจ์ (0) | 2021.10.02 |
[React] ์ด๋ฒคํธ state props ๊ทธ๋ฆฌ๊ณ render ํจ์ ๊ฐ์ (0) | 2021.10.02 |
[React] State์ Props์ ์ฐจ์ด (0) | 2021.10.02 |