vue3初始2

Vue3的setup函数是组合式API的核心,用于声明组件的状态和方法。在这个函数中,props可以直接访问,但不再有this。setup返回的对象属性和方法可以直接在模板中使用。子组件通过context的emit方法触发自定义事件来传递数据给父组件。watch在setup中依然可用,可以监听多个数据变化。注意,当监听reactive数据时,旧值可能不可用,且默认开启深度监听。
摘要由CSDN通过智能技术生成

setup总结:

setup是所有组合式API的容器,值为一个函数,组件中需要用到的方法,数据等,都要写在其中,

需要注意的是,v3里this不在指向Vue实例,所以访问this是undefined,最重要的是setup具有返回值,如果返回值是一个对象的话,那么对象中的属性和方法则可以在模板中直接使用

setup不能是async函数,因为他的返回值不在是return的对象,而是promise,

父传子 子传父

父传子,没有多大变化,主要还是props接收父组件传过来的数据,不过就是使用到了sertup函数

比如父组件传过来一个msg,使用props接收完毕,并且使用它,则需要这样做

setup(props,context){
        console.log(props,context);
}

子传父有点小变化

请注意v2中的this.$emit不在生效,setup函数中没有this,但是setup中的第二个参数context提供了emit方法即这样做

子组件


    setup(props,context){
        context.emit('name','儿子的值')
}

父组件

<template>
    <Son @name="name" ></Son>
</template>
 
  setup() {
      const name = (name)=>console.log(name);
//别忘了return
        return {name}
  },  

两句话总结:

  • 父传子:在setup中使用props数据 setup(props)props就是父组件数据 

  • 子传父:触发自定义事件的时候emit来自 setup(props,{emit}),emit 就是触发事件函数

watch与v2变化不大,还是在setup函数中写,可以监听多个数据的变化即:


 
<script>
//引入别忘了
import {ref,watch} from 'vue'
export default {
  setup() {
      let num=ref(1)
      let num2=ref(2)
    const addNum=()=>num.value++
    const addNum2=()=>num2.value++
      watch([num,num2],(newValue)=>{
          console.log(newValue);
      })
      return {num,num2,addNum,addNum2}
  },
};
</script>

复杂数据 的监听依然是要开启深度监听,即deep:true

但是如果若watch监视的是reactive定义的响应式数据,则无法正确获得oldValue ,

如果watch监视的是reactive定义的响应式数据,则强制开启了深度监视

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值