๋ชฉ์ฐจ
๋ฐ์ดํฐ ๋ณํ ๊ฐ์งํ๋ ์ ์ ๋์ผํ์ง๋ง ์ฉ๋๊ฐ ๋ค๋ฆ
watch
๋ฐ์ดํฐ์ ๋ณํ๋ฅผ ๊ฐ์งํ๊ณ ์ํ๋ ๋ก์ง์ ์ํํ๋๋ฐ ์ฌ์ฉ
- ์ฃผ๋ก ๋ฐ์ดํฐ ๋ณํ ์ ๋น๋๊ธฐ์ ๋ก์ง ๋ฑ ๋ณต์กํ ๋ก์ง ์ํ ์ ์ฌ์ฉ๋จ
- ๋ณ๊ฒฝ ์ ๋ฐ์ดํฐ, ๋ณ๊ฒฝ ๋ ๋ฐ์ดํฐ๋ฅผ ๋งค๊ฐ๋ณ์๋ก ๋ฐ์์ ์ฒ๋ฆฌ ๊ฐ๋ฅ
<div id="app">
<p>์นด์ดํธ: {{ count }}</p>
<button @click="increment">์ฆ๊ฐ</button>
</div>
new Vue({
el: '#app',
data: {
count: 0
},
methods: {
increment() {
this.count++;
}
},
watch: {
//๋งค๊ฐ๋ณ์๋ก ๋ณ๊ฒฝ๋ ๊ฐ, ๋ณ๊ฒฝ ์ ๊ฐ์ ๋ฐ์ ์ ์์
count(newValue, oldValue) {
console.log('count๊ฐ ๋ณ๊ฒฝ๋์์ต๋๋ค. ์ด์ ๊ฐ: ${oldValue}, ์ ๊ฐ: ${newValue}');
//ajax ๋ก์ง ์๋ต...
}
}
});
computed
๊ธฐ์กด์ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์๋ก์ด ๋ฐ์ดํฐ ์์ฑ/๊ฐ๊ณตํ๋๋ฐ ์ฌ์ฉ
- ์๋ ์บ์ฑ ์ง์, ์ค๋ณต ๊ณ์ฐ์ ๋ฐฉ์งํ๊ณ ์ฑ๋ฅ ์ต์ ํ
- ๊ธฐ์กด ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ณต ํ ๋ณต์กํ ๊ณ์ฐ์ด ํ์ํ ๊ฒฝ์ฐ ์ฌ์ฉ
- ๋ฉ์๋์ฒ๋ผ ์ฌ์ฉํ๋๊ฒ ์๋๋ผ ๋ฐ์ดํฐ์ฒ๋ผ ์ฌ์ฉ๋จ
<div id="app">
<p>๋ฐ์ง๋ฆ: <input type="number" v-model="radius"></p>
<p>์์ ๋์ด: {{ circleArea }}</p>
</div>
new Vue({
el: '#app',
data: {
radius: 0
},
computed: {
circleArea() {
return Math.PI * this.radius * this.radius;
}
}
});
computed ์์ฑ์ ์ด์ฉํ ๋์ ํด๋์ค ์ฝ๋ ์์ฑ
<div id="app">
<!-- class ๋ฐ์ธ๋ฉ์ computed return ๊ฐ์ ์ฐ๊ฒฐ -->
<p :class="errorTextcolor">Hello</p>
</div>
new Vue({
el: '#app',
data: {
isError: false
},
computed: {
errorTextcolor: function() {
// isError์ this. ์ ๋ถ์ด๋ฉด ๋ชป ์ฐพ์
return (this.isError ? 'warning' : null);
}
}
});
isError์ ๊ฐ ๋ณ๊ฒฝ ์ computed ์์ฑ์ ์ํด ๋์ ์ผ๋ก ํด๋์ค๊ฐ ์ ์ฉ๋จ
'IT > development' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Vue.js] modal์ฐฝ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ ์๋ ๋ (2) | 2023.08.06 |
---|---|
[Vue.js] vue.js์ ๋ ๋๋ง ๋ฐฉ์๊ณผ ๊ธฐ์กด ๋ฐฉ์์ ์ฐจ์ด์ (feat. ajax) (8) | 2023.07.30 |
[Vue.js] ์ฑ๊ธ ํ์ผ ์ปดํฌ๋ํธ์์ axios ํต์ (0) | 2023.07.29 |
[Vue.js] ์ฑ๊ธ ํ์ผ ์ปดํฌ๋ํธ์์ event emit ์์ฑ ์ด์ฉ (0) | 2023.07.29 |
[Vue.js] ์ฑ๊ธ ํ์ผ ์ปดํฌ๋ํธ์์ props ์์ฑ ์ด์ฉ (0) | 2023.07.29 |
๋๊ธ