watch和watchEffect
<script>//import Hello from "./components/Hello.vue";import { ref,reactive,toRefs,watch, watchEffect } from "vue";export default { data() { return { message: 'hellokougou' }; }, setup(){//setup 组件被创立之前执行,不须要应用this const counter=ref(0) function changeCounter(){ counter.value++ } const user=reactive({ name:'tom', age:56, }) function changeName(){ user.name='sean' } watch(counter, (newVal,oldVal)=>{ console.log('new',newVal) console.log(oldVal) }) watch(user,(newVal,oldVal)=>{ console.log('new',newVal) console.log(oldVal) }) //只有一个回调函数 watchEffect(()=>{ console.log(user.name,'watcheffect') }) return { counter,user,changeCounter,changeName } }, //选项式api watch:{ messages:function (newVal,oldVal){ console.log(newVal) } }, methods:{ }, components:{ //Hello }}</script><template> <div> <h2>{{counter}}</h2> <button @click="changeCounter">changeCounter</button> <h2>{{user.name}}</h2> <button @click="changeName">changeName</button> </div></template>
watchEffect不须要有监听属性的,只有在回调中援用了响应式的属性
watch只能监听指定的属性,且能够搞多个
computed
<script>//import Hello from "./components/Hello.vue";import { ref,reactive,toRefs,watch, watchEffect,computed } from "vue";export default { data() { return { message: 'hello6666666666666' }; }, setup(){//setup 组件被创立之前执行,不须要应用this const msg=ref('hellokugou') const reverseMsg=computed(()=>{ //返回一个带有value属性的对象 return msg.value.split('').reverse().join('') }) console.log(reverseMsg.value,'----reverseMsg.value') return { msg,reverseMsg } }, //选项式api computed:{ reverseMsg2:function(){ return this.message.split('').reverse().join('') } }, methods:{ }, components:{ //Hello }}</script><template> <div> <h2>{{msg}}</h2> <h2>{{reverseMsg}}</h2> </div></template>