<!-- 루트 컴포넌트 인스턴스 -->
let vm = Vue.createApp({
name: "App",
data() {
return {name: ""};
},
}).mount("#app");
<!-- #app: <div id="app"></div> 여기를 관리하는 인스턴스 -->
data() {
return {name: ""};
},
<!--리턴 안 객체가 속성별로 proxy-->
vm.$data.name : vm.name = "Hello"
> "Hello"
vm.$data.name
> "Hello"
$, _ 로 시작하는 이름을 data 객체의 속성명으로 사용하면 안 됨
<body>
<div id="app">
1보다 큰 수: <input type="text" v-model.number="num" /> <br />
<!-- sum()함수는 단 한번만 호출됨 -->
1부터 입력한 값까지의 합: <span>{{sum}}</span><br />
1부터 입력한 값까지의 합: <span>{{sum}}</span><br />
1부터 입력한 값까지의 합: <span>{{sum}}</span><br />
</div>
<script src="https://unpkg.com/vue"></script>
<script>
let vm = Vue.createApp({
name: 'App',
data() {
return { num: 0 };
},
computed: {
sum() {
console.log('Num: ' + this.num);
let n = parseInt(this.num);
if (Number.isNaN(n)) return 0;
return (n * (n + 1)) / 2;
},
},
}).mount('#app');
</script>
</body>
<body>
<div id="app">
1보다 큰 수: <input type="text" v-model.number="num" /> <br />
<!-- sum(): 랜더링될때 메서드 직접 호출 -->
1부터 입력한 값까지의 합: <span>{{sum()}}</span><br />
1부터 입력한 값까지의 합: <span>{{sum()}}</span><br />
1부터 입력한 값까지의 합: <span>{{sum()}}</span><br />
</div>
<script src="https://unpkg.com/vue"></script>
<script>
let vm = Vue.createApp({
name: 'App',
data() {
return { num: 0 };
},
methods: {
sum() {
console.log('Num: ' + this.num);
let n = parseInt(this.num);
if (Number.isNaN(n)) return 0;
return (n * (n + 1)) / 2;
},
},
}).mount('#app');
</script>
</body>
- 메서드 : 템플릿으로 렌더링할 때 호출
- 계산된 속성 : 미리 호출하여 캐싱해둔 값을 렌더링할 때 반복적으로 사용
∴ 동일한 값을 같은 화면에 여러 번 출력할 경우 => 계산된 속성 사용
(변경 후 값, 변경 전 값) </head>
<body>
<div id="app">
x: <input type="text" v-model.number="x" /><br />
y: <input type="text" v-model.number="y" /><br />
덧셈 결과: {{sum}}
</div>
<script src="https://unpkg.com/vue"></script>
<script>
let vm = Vue.createApp({
name: 'App',
data() {
return { x: 0, y: 0, sum: 0 };
},
// 감시대상: x
watch: {
x(current, old) {
console.log(`x: ${old} --> ${current}`);
var result = Number(current) + Number(this.y);
if (isNaN(result)) this.sum = 0;
else this.sum = result;
},
// 감시대상: y
y(current, old) {
console.log(`y: ${old} --> ${current}`);
var result = Number(current) + Number(this.x);
if (isNaN(result)) this.sum = 0;
else this.sum = result;
},
},
}).mount('#app');
</script>
</body>
