vue3 之watchEffect监听数据

在vue3中还可以通过watchEffect来监听响应式,它的返回值是一个函数,可以通过调用函数解除监听
它的参数是一个回调函数,当响应式数据发生改变会立即触发回调函数

  1. import {ref,watchEffect} from 'vue'
  2. export default {
  3. setup () {
  4. let num = ref(2)
  5. let add = ()=>{
  6. num.value ++
  7. }
  8. let result = watchEffect(()=>{
  9. if(num.value>5){
  10. console.log('不能再加了')
  11. num.value = 5
  12. }
  13. })
  14. result()
  15. return {num,add}
  16. }
  17. }
  18. </script>

vue3中使用props传参

父组件传值给子组件,组件通过props接收,同时作为参数传递给setup函数使用

  1. <v3 :num="3"></v3>
<template>
    {{num}}
</template>

<script>
import {ref} from 'vue'
export default {
    props:['num'],
    setup (props) {
        let num = ref(props.num)
        return {num}
    }
}
</script>

vue3中子组件同时事件传参给父组件的写法

setup函数第二个参数是一个对象,里面有emit方法。通过emit方法触发父组件绑定事件,传递参数
父组件中设置:

<template>
<v3  @change="changeHandle"></v3>
{{num2}}
</template>   
// -----------------
setup(){
      let num2 = ref(0)
      let changeHandle = (v)=>{
        num2.value = v
      }
      return {num2,changeHandle}
    }

子组件中触发

  <div @click="handle">增加</div>
// ----------------------------------
export default {
    setup (props,context) {
        let num = ref(0)
        const {emit} = context
        let handle = ()=>{
            num.value++
            emit('change',num.value)
        }
        return {num,handle}
    }
}