vue3 Study(1)

一、初识vue3

https://juejin.cn/post/7487815126301818880

二、VUE3基础之组合式开发和setup

https://juejin.cn/post/7488176279921934376

三、VUE3基础之ref和reactive创建响应式数据

https://blog.csdn.net/qq_58195504/article/details/145160950?spm=1001.2014.3001.5502

四、解构赋值,toRefs和toRef把响应式对象里面的数据结构出来依然是响应式数据

四、VUE3基础之计算属性

https://juejin.cn/post/7491485553030316082

复制代码
<script setup>
    import { computed,ref } from 'vue';
    let firstName = ref('zhang')
    let lastName = ref('san')
    // 下面这种方式只能读取
    // let fullName = computed(()=>{
    //     return firstName.value+'-' +lastName.value
    // })

    // 下面这种方式可以编辑,也可以读取
    let fullName = computed({
        get(){
            return firstName.value+'-' +lastName.value
        },
        set(val){
            let [str1,str2] = val.split('-')
            firstName.value = str1
            lastName.value = str2
        }
    })
    function changeName(){
        fullName.value = 'li-si'
    }
    

</script>
<template>
   姓:<input type="text" v-model="firstName"></input>
   名:<input type="text" v-model="lastName"></input>
   姓名:<span>{{ fullName }}</span>
    <button @click="changeName">改名</button>
</template>

五、监听器

https://juejin.cn/post/7498258715231092762

情况一、监视ref定义的数据,直接写数据名就可以(即:不需要添加.value)

复制代码
<script setup>
import {ref ,reactive,watch} from 'vue'
let count =  ref(0)
function add(){
    count.value +=1
}
watch(count,()=>{
    console.log('count改变了11111111')
})

</script>
<template>
<div>{{ count }}</div>
<button @click="add">点击+1</button>
</template>

情况二、监视ref定义的·对象类型的数据,若要监视内部数据的变动,需要手动开启深度监视

复制代码
<script setup>
import {ref,watch} from 'vue'
let car =  ref({brand:'玛莎拉蒂',price:100})
function changeBrand(){
    car.value.brand = '奥迪'
}
function changePrice(){
    car.value.price = 60
}
function changeCar(){
    car.value =  {brand:'比亚迪',price:9}
}
watch(car,()=>{
    console.log('car改变了11111111')
},{deep:true})

</script>
<template>
<div>{{ car.brand }}的价钱是{{ car.price }}万</div>
<button @click="changeBrand">更改品牌</button>
<button @click="changePrice">更改价格</button>
<button @click="changeCar">更改整个车</button>
</template>

情况三、使用reactive监视对象数据的属性,默认是开启深度监视的,即不需要添加deep:true,就可以直接监视内部数据的改变

复制代码
<script setup>
import {reactive,watch} from 'vue'
let car =  reactive({brand:'玛莎拉蒂',price:100})
function changeBrand(){
    car.brand = '奥迪'
}
function changePrice(){
    car.price = 60
}
function changeCar(){
    Object.assign(car,{brand:'aima',price:2})
}
watch(car,()=>{
    console.log('car改变了11111111')
},{deep:true})

</script>
<template>
<div>{{ car.brand }}的价钱是{{ car.price }}万</div>
<button @click="changeBrand">更改品牌</button>
<button @click="changePrice">更改价格</button>
<button @click="changeCar">更改整个车</button>
</template>

情况四、监视多个属性

复制代码
<script setup>
import {reactive,watch} from 'vue'
let person =  reactive({
    name:'李现',
    car:{
        brand:'玛莎拉蒂',
        price:100
    }
})
function changeName(){
    person.name = '杨紫'
}
function changeBrand(){
    person.car.brand = '奥迪'
}
function changePrice(){
    person.car.price = 60
}
function changeCar(){
    Object.assign(person.car,{brand:'aima',price:2})
}
watch([()=>person.name,person.car],()=>{
    console.log('姓名改变了11111111')
},{deep:true})

</script>
<template>
<div>{{person.name}}购买{{ person.car.brand }}的价钱是{{ person.car.price }}万</div>
<button @click="changeName">更改名字</button>
<button @click="changeBrand">更改品牌</button>
<button @click="changePrice">更改价格</button>
<button @click="changeCar">更改整个车</button>
</template>

六、watch和watchEffect

(1) 都能监听响应式数据的变化,不同的是监听数据变化的方式不同。

(2) **watch:**要明确指出监视的数据。

(3) **watchEffect:**不用明确指出监视的数据(函数用到哪些属性,就自动监视哪些属性)

复制代码
<template>
    <div>水温:{{temp}}℃</div>
    <div>高度:{{ height}}m</div>
    <button @click="changeTemp">改变水温</button>
    <button @click="changeHeight">改变高度</button>
</template>
<script setup>
    import {ref,watch,watchEffect} from 'vue'
    let temp = ref(0)
    let height = ref(0)
    function changeTemp(){
        temp.value+=10
    }
    function changeHeight(){
        height.value+=20
    }
    // watch([temp,height],(value)=>{
    //     let [newTemp,newHeight] = value
    //     if(newTemp>=50 || newHeight>=40){
    //         console.log('向服务器发请求');
            
    //     }
    // })

    watchEffect(()=>{
        if(temp.value>=50 || height.value>=40){
            console.log('向服务器发请求');
            
        }
    })
</script>

七、VUE3基础之标签的ref属性

https://juejin.cn/post/7501880110838284340

八、VUE3基础之props

https://juejin.cn/user/2496335488221770/posts

九、生命周期

https://juejin.cn/post/7508591120407052298

十、组件通信

https://blog.csdn.net/qq_58195504/article/details/145608245?spm=1001.2014.3001.5502

相关推荐
林小帅9 小时前
【笔记】OpenClaw 生态系统的多语言实现对比分析
前端·agent
程序猿的程9 小时前
开源一个 React 股票 K 线图组件,传个股票代码就能画图
前端·javascript
不爱说话郭德纲9 小时前
告别漫长的HbuilderX云打包排队!uni-app x 安卓本地打包保姆级教程(附白屏、包体积过大排坑指南)
android·前端·uni-app
大雨还洅下10 小时前
前端JS: 虚拟dom是什么? 原理? 优缺点?
javascript
唐叔在学习10 小时前
[前端特效] 左滑显示按钮的实现介绍
前端·javascript
用户52822903018010 小时前
【学习笔记】ECMAScript 词法环境全解析
前端
青青家的小灰灰10 小时前
React 架构进阶:自定义 Hooks 的高级设计模式与最佳实践
前端·react.js·前端框架
Angelial10 小时前
Vite 性能瓶颈排查标准流程
前端
不要秃头啊10 小时前
别再谈提效了:AI 时代的开发范式本质变了
前端·后端·程序员
青青家的小灰灰10 小时前
深入理解事件循环:异步编程的基石
前端·javascript·面试