1.ref;reactive响应式
<template>
<div>{{count}}{{object.foo}}</div>
</template>
<script>
import {ref,reactive} from 'vue'
export default {
props:{
name:String,
},
setup(props) {
watchEffect(()=>{
console.log(props.name)
})
const count=ref(0)
const object=reactive({foo:'bar'})
return {
count,
object,
}
}
}
</script>
2.computed
<template>
<div>{{count}}</div>
</template>
<script>
import {ref,reactive} from 'vue'
export default {
props:{
name:String,
},
setup(props) {
const count=ref(1)
const original=reactive({count1:0})
const copy=readonly(original)
const plusone= computed(()=>count.value+1)
console.log(plusone.value)
const plubstwo=computed({
get:()=>count.value+1,
set:(val)=>{
count.value=val-1
}
})
plustwo.value=11
}
}
</script>
3.watchEffect
<template>
<div>{{count}}</div>
</template>
<script>
import {ref,reactive} from 'vue'
export default {
props:{
name:String,
},
setup(props) {
const count = ref(1)
const stop=watchEffect(()=>console.log(count))
setTimeout(() => {
count.value++
})
stop()
watchEffect((onInvalidate)=>{
const token=performAsyncOperation(id.value)
onInvalidate(()=>{
token.cancel()
})
})
watchEffect(()=>{},{flush:'sync'})
watchEffect(()=>{},{flush:'pre'})
}
}
</script>
4.watch
<template>
<div>{{count}}</div>
</template>
<script>
import {ref,reactive} from 'vue'
export default {
props:{
name:String,
},
setup(props) {
const state=reactive({count:0})
watch(()=>state.count,(count,precount)=>{})
const count=ref(0)
watch(count,(count,prevcont)=>{})
const foo=ref(0)
const bar=ref(0)
watch([foo,bar],([foo,bar],[prefoo,prebar])=>{})
}
}
</script>
5.生命周期
<template>
<div>{{count}}</div>
</template>
<script>
import {onUpdated,onMounted,onUnmounted,onBeforeMount,onBeforeUpdate,onBeforeUnmount} from 'vue'
export default {
props:{
name:String,
},
setup(props) {
onBeforeMount(() => {
}),
onMounted(() => {
}),
onBeforeUpdate(() => {
}),
onUpdated(() => {
}),
onBeforeUnmount(() => {
}),
onUnmounted(() => {
}),
}
}
</script>
6.provid/inject
<script>
import {} from 'vue'
export default {
setup() {
const them=ref('dark')
const sym=Symbol()
provide(sym,them)
},
}
</script>
<script>
import {} from 'vue'
export default {
setup() {
const sym=Symbol()
inject(sym,ref('light'))
},
}
</script>
7.refs获取dom
<template>
<div ref='box'></div>
</template>
<script>
import {onMounted,ref} from 'vue'
export default {
setup() {
const box=ref(null)
onMounted(() => {
console.log(box.value)
}),
return {
box
}
},
}
</script>