Vue3学习 Day03

标签的ref属性

用ref标记dom元素

取代了用id来标识标签,因为用id来标识标签,如果父组件和子组件中有id一样的,会引起混淆。

用ref标记组件

子组件

向父亲暴露name,age,classroom(非响应式)            sex不暴露 

父组件

得到子组件的实例,测试按钮用于测试能否获取子组件的数据

测试 

TS中的接口,泛型

****************************************************************************************

在src中新建一个和组件文件夹同级的types文件夹,里面写ts文件

定义一个学生接口,用于规范学生内的成员(记得导出)

****************************************************************************************

使用接口规范数据格式

*****************************************************************************************************

 

集合可用泛型

 *************************************************************************************************

 age 加上一个 ? 表示这个字段是可选的

 

没有age也不报错 

***************************************************************************

reactive直接传泛型也可以

props的使用(父组件给子组件传数据)

第一种:接收并保存到props里面

父组件

子组件

 

测试 

第二种:接收+限制类型

父组件

同上

如果父组件给出的数据和子组件要求的不一样,会报错 

子组件

测试

同上

第三种:

父组件

故意不传myList 

子组件

怎么写:第二种情况的语句  作为withDefaults的 第一个参数,第二个参数用大括号包裹(因为有多个不同类型的数据,是对象)起来,里面 key: value   其中value要用返回值的形式给出(这里用箭头函数) 

测试

Vue的生命周期

总的概述

 测试Vue3的生命周期

父组件

<!-- 父组件App.vue -->
<template>
    <TestVueLifeCycle></TestVueLifeCycle>
</template>
  
<script lang="ts" setup name="App">
    import TestVueLifeCycle from './components/TestVueLifeCycle.vue';
    import { onBeforeMount,onMounted } from 'vue';


    onBeforeMount(()=>{
        console.log("父-挂载前")
            })
    onMounted(()=>{
        console.log("父-挂载完成")
    })
   </script>

子组件

<template>
<h2>{{ count }}</h2>
<button @click="f1">点我count+1</button>
</template>

<script lang="ts" setup>
    import { ref } from 'vue';
    import { onBeforeMount,onMounted } from 'vue';//挂载前,挂载完成
    import { onBeforeUpdate,onUpdated } from 'vue';//更新前,更新完成
    import { onBeforeUnmount,onUnmounted } from 'vue';//销毁前,销毁完成

    let count=ref(0)
    function f1(){
        count.value++
    }
    
    console.log("setup完成vue2中创建前,创建完成工作")


    onBeforeMount(()=>{
        console.log("子-挂载前")
            })
    onMounted(()=>{
        console.log("子-挂载完成")
    })

    onBeforeUpdate(()=>{
        console.log("更新前")
    })
    onUpdated((()=>{
        console.log("更新完成")
    }))

    onBeforeUnmount(()=>{
        console.log("销毁前")
    })
    onUnmounted(()=>{
        console.log("销毁完成")
    })
</script>

测试

更新的钩子函数的执行不难理解(执行了两次按钮点击的效果),那前面的钩子为什么会这样执行呢?

答:

1.运行我们的vue工程,首先来到index.html,这是我们的入口html,它调用了main.ts

 2.来到main.ts,这里调用了App.vue,并尝试创建它并将它挂载到index.html的名为app的div标签下(输出 父-setup  父-挂载前)

 

 3.来到App.vue  它自上而下执行,所以会先执行所有孩子的创建和挂载工作,等所有的孩子都创建和挂载完成后,App.vue才执行onMounted函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值