vue3学习笔记

创建项目:npm init vue@latest

cnpm install 安装(cnpm比npm快)

删除components文件夹中的多余文件

<template>

<p>{{ 可以写一些Javascript单行表达式 }}</p>  # 需要有结果的return
<p>{{ number+1 }}</p> # 返回的结果是11
<p v-html="rawHtml"></p>  # 嵌套html写法

</template>

<script>
export default{
  data(){
    return{
      number:10,
      rawHtml:"<a href='#'>网站标签</a>"
    }
  }

}
</script>


 

文本插值:

语法糖写法:

 响应式对象的创建:

 

<script setup>
 // 导入
 import { reactive } from 'vue'
 // 执行函数 传入参数 变量接收
 const state = reactive({
   count:0
 })
 const setCount = ()=>{
   // 修改数据更新视图
   state.count++
 }
</script>

<template>
    <div>
    // @click绑定一个事件
          <button @click="setCount">{{ state.count }}</button>
    </div>
</template>

// 出来的效果是每点击一下就会+1

 

<script setup>
 // 导入
 import { ref } from 'vue'
 // 执行函数 传入参数 变量接收
 const count = ref(0)
 const setCount = ()=>{
   // 脚本区域修改数据更新视图必须加上.value
   count.value++
 }
</script>

<template>
  <button @click="setCount">{{count}}</button>
</template>

<script setup>
// 导入
import {ref, computed } from 'vue'
// 原始数据
const count = ref(0)
// 计算属性
const doubleCount = computed(()=>count.value * 2)

// 原始数据
const list = ref([1,2,3,4,5,6,7,8])
// 计算属性list
const filterList = computed(item=>item > 2)
</script>

 Watch函数:

1. 侦听单个数据

<script setup>
  // 1. 导入watch
  import { ref, watch } from 'vue'
  const count = ref(0)
  // 2. 调用watch 侦听变化
  watch(count, (newValue, oldValue)=>{
    console.log(count发生了变化,老值为${oldValue},新值为${newValue}`)
  })
</script>

2. 侦听多个数据
> 侦听多个数据,第一个参数可以改写成数组的写法


<script setup>
  // 1. 导入watch
  import { ref, watch } from 'vue'
  const count = ref(0)
  const name = ref('cp')
  // 2. 调用watch 侦听变化
  watch([count, name], ([newCount, newName],[oldCount,oldName])=>{
    console.log(`count或者name变化了,[newCount, newName],[oldCount,oldName])
  })
</script>

3. immediate
在侦听器创建时立即出发回调,响应式数据变化之后继续执行回调

<script setup>
  // 1. 导入watch
  import { ref, watch } from 'vue'
  const count = ref(0)
  // 2. 调用watch 侦听变化
  watch(count, (newValue, oldValue)=>{
    console.log(`count发生了变化,老值为${oldValue},新值为${newValue}`)
  },{
    immediate: true
  })
</script>

4. deep
通过watch监听的ref对象默认是浅层侦听的,直接修改嵌套的对象属性不会触发回调执行,需要开启deep

<script setup>
  // 1. 导入watch
  import { ref, watch } from 'vue'
  const state = ref({ count: 0 })
  // 2. 监听对象state
  watch(state, ()=>{
    console.log('数据变化了')
  })
  const changeStateByCount = ()=>{
    // 直接修改不会引发回调执行
    state.value.count++
  }
</script>

生命周期函数:

 

 用于补充逻辑

父子通信:

 

 模板引用:

概念:通过 ref标识 获取真实的 dom对象或者组件实例对象

> 实现步骤:
> 1. 调用ref函数生成一个ref对象
> 2. 通过ref标识绑定ref对象到标签

  provide和inject
 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值