Vue3 的基本使用

创建一个新的 vue3 项目

1、

 2、

3、进入你创建好的项目中在 npm i  一下,最后在打开你的项目 


vue3 具体使用:

<script>

export default {
  setup() {
    // 数据
    const text = '高尚是高尚者的墓志铭'
    // 事件
    const but = () => {
       console.log('123')
    }
    // return 出去
    return {
      text,
      but
    }
  }
}
</script>

<template>
  <div>
    <p>setup: {{text}}</p>
    <button @click="but">but</button>
  </div>
</template>

<style scoped>
</style>

每次 return 太麻烦,vue3 提供了语法糖来解决这个问题 ,直接在 script 标签上加上 setup

<script setup>
    // 数据
    const text = '高尚是高尚者的墓志铭'
    // 事件
    const but = () => {
       console.log('123')
    }
</script>

<template>
  <div>
    <p>setup: {{text}}</p>
    <button @click="but">but</button>
  </div>
</template>

<style scoped>
</style>

响应式 reactive 

<script setup>
// 导入 
import {reactive} from 'vue'

// 响应式对象
let change = reactive({
  num:9
})

const add = () => {
  change.num++
}

// setInterval(() => {
//   change.num++
// },1000)
</script>

<template>
  <button @click="add">{{change.num}}</button>
</template>

<style scoped>

</style>

响应式 ref

<script setup>
// 导入
import {ref} from 'vue'

// 响应式 ref,加 value
let num = ref(9)
const changeNum = () => {
  console.log(num)
  num.value++
}

let text = ref({
  name:'张三'
})
// 注意写法
const changeText = () =>{
  console.log(text)
  text.value.name = '李四'
}


</script>

<template>
  <button @click="changeNum">{{num}}</button>
  <button @click="changeText">{{text.name}}</button>
</template>

<style scoped>

</style>

ref 和 reactive 的区别

1相同点:都是用来生成响应式数据
2不同点
areactive不能处理简单类型的数据
ref 参数类型支持更好,但是必须通过.value做访问修改
ref 函数内部的实现依赖于reactive函数

推荐使用ref函数

watch 监听事件


watch 监听事件-监听基本类型

<script setup>
// 导入
import {ref, watch} from 'vue'

// 响应式
let num = ref(0)
let number = ref(9)
// 事件处理
const but = () => {num.value++}
const button = () => {number.value++}
// 监听事件变化, 在 watch 中不用加 .value

// 监听单个值
watch(num,(newVale,oldVale) => {
  console.log('单个值变化',newVale,oldVale)
}) 

// 监听多个值,方法一
watch([num,number],(newVale,oldValue) => {
  console.log('多个值变化一',newVale,oldValue)
})

// 监听多个值,方法二
watch([num,number],([newVale,oldValue],[newNum,oldNum]) => {
  console.log('多个值变化二num',newVale,oldValue)
  console.log('多个值变化二number',newNum,oldNum)
})

// 立即侦听
watch(num,(newValue,oldValue) => {
  console.log('立即执行',newValue,oldValue)
},{immediate: true})



</script>

<template>
  <div>
    <button @click="but">{{ num }}</button>
    <button @click="button">{{ number }}</button>
  </div>
</template>

watch 监听事件-监听对象

<script setup>
// 导入
import {ref, watch} from 'vue'

// 响应式
let numObj = ref({
  name:'张三',
  age:18
})

// 处理事件
const butNum = () => {
numObj.value.age++
}

// 监听事件变化, 在 watch 中不用加 .value
// 监听对象事件 deep
watch(numObj,(newValue,oldValue) => {
  console.log('事件',newValue,oldValue)
},{ deep:true })

/* 
开启deep 可以监听当前对象深层的变化
缺点:
1、它会遍历每个属性去监听,影响性能
2、任意一个属性的变化都会触发,不能精确定位
*/

// 在不开启deep 的情况下监听对象
watch(() => numObj.value.age, (newValue,oldValue) => {
  console.log('不开启deep 监听', newValue,oldValue)
})

</script>

<template>
  <div>
    <button @click="butNum">{{ numObj.age }} </button>
  </div>
</template>

-

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值