setup计算属性和钩子函数
1.setup 定义计算属性
<script src="https://unpkg.com/vue@next"></script>
<body>
<div id="app">
<h3>setup-computed计算属性</h3>
obj.b: {{obj.b}}
<br>
<p>计算属性:2倍:{{doubleB}} </p>
<p>计算属性:0.5倍:{{halfB}} </p>
<p>计算属性:3倍:{{triangleB}} </p>
<button @click="obj.b+=1">原值+1</button>
</div>
<script>
const { createApp, reactive, computed } = Vue
const app = createApp({
data() {
return {}
},
// 步骤:
// 1. 在setup中通过computed来创建函数,
// 2. 导出
setup() {
// reactive: 会对对象进行包装
const obj = reactive({b: 1})
// 通过computed来创建计算属性
const doubleB = computed(()=>{
return 2*obj.b
})
const triangleB = computed(()=>{
return 3*obj.b
})
return { obj, doubleB, triangleB }
},
computed: {
halfB () {
return this.obj.b / 2
}
}
})
app.mount("#app")
</script>
</body>
通过computed(回调)的方式来计算属性,然后在setup中返回即可。
2.在setup中写watch
<script src="https://unpkg.com/vue@next"></script>
<div id="app">
<h3>setup-watch</h3>
{{obj.b}}, {{a}}
<br>
<button @click="obj.b+=1">原值b+1</button>
<button @click="a+=1">原值a+1</button>
</div>
<script>
const { createApp, reactive, watch, ref } = Vue
const app = createApp({
data() {
return {
}
},
setup() {
// reactive: 会对对象进行包装
const obj = reactive({b: 1})
const a = ref(0)
// 通过watch来监听
watch(() => obj.b ,()=>{
console.log(`obj.b变化了`)
})
watch(a, ()=>{
console.log(`a变化了`)
})
return { obj, a }
}
})
app.mount("#app")
</script>
3.在setup中写钩子函数
<script src="https://unpkg.com/vue@next"></script>
<body>
<div id="app">
<h3>setup-钩子函数</h3>
</div>
<script>
const { createApp,onMounted} = Vue
const app = createApp({
data() {
return {
}
},
setup() {
onMounted(()=>{ console.log('setup, mounted1')})
onMounted(()=>{ console.log('setup, mounted2')})
},
mounted () {
console.log('mounted')
}
})
app.mount("#app")
</script>

浙公网安备 33010602011771号