当前位置: 首页 > news >正文

vue3学习笔记 - P1

vue3学习笔记——第一章

  • 1. 创建及引入的改变
      • - 创建vue3项目
      • - 项目中引入vue3
  • 2. 组合式API
      • - setup配置项
  • 3. 响应式API
      • 1. ref和reactive:响应式函数
      • 2. computed:计算属性函数
      • 2. watch:侦听函数
          • 1. 普通watch函数
          • 2. watchEffect函数

1. 创建及引入的改变

- 创建vue3项目

通过脚手架vue-cli创建

npm install -g @vue/cli 或 yarn global add @vue/cli vue create app-name 或 通过ui页面进行创建

- 项目中引入vue3

vue3引入方式

import { createApp } from 'vue'; //引入工厂函数 import App from './App.vue'; //导入app组件 const app = createApp(App) app.mount('#app')

vue2引入方式

import Vue from 'vue' import App from './app.vue' new Vue({ render: h => h(App) }).$mount('#app')

vue3的组件可以不写根标签,vue3会自动的将元素包裹到一个fragment

2. 组合式API

- setup配置项

vue3新增了setup配置项,原有的data、methods、computed等等配置项都可以在setup中书写,setup在beforeCreate之前执行一次,此时this值为undefined,所以在setup中不推荐使用this,有以下几个注意点:

  1. 其值是一个函数,里面可以写属性方法等
  2. 可以传递两个参数:props、context
  3. 需要return一个对象,将模板所需的属性或方法返回
  4. 不能书写异步方法(通常来看)
setup: function(props, context) { let name = 'wmh', let age = 18 return { name, age } }

setup的参数问题:

  1. props:值为一个对象,包含组件外部传递过来,且在组件内部通过props配置项声明接收了的属性,
  2. context:上下文对象,包含三个内容
    • attrs:值为对象,包含组件外部传递过来,但没有在props配置中声明的属性
    • slots:收到的插槽内容
    • emit:分发自定义事件的函数,需要配置emits配置项

3. 响应式API

1. ref和reactive:响应式函数

ref和reactive函数:响应性基础api

import { ref } from 'vue' //导入ref函数 setup() { let name = ref('wmh') //接收一个值并返回一个响应式可变的ref对象(引用对象) name.value = 'wyz' //需要通过.value操作值 return { name } }
import { creative } from 'vue' //导入creative函数 setup() { let person = creative({ //返回一个reactive对象(代理对象) name:'wmh', age: 18 }) person.name = 'wyz' //不需要通过.value操作值 return { person } }

ref和reactive的对比:

  1. 从定义数据类型看:ref用来定义基本数据类型,也可以用来定义对象及数组,其内部会自动通过reactive转为代理对象;reactive用来定义对象或数组
  2. 从响应式原理看:ref函数是通过object.defineProperty的set、get实现数据拦截,从而实现响应式;reactive函数则是通过proxy(代理)实现数据拦截,通过reflect操作属性
  3. 从使用方式看:ref需要使用.value来操作属性,但模板输出时不需要;reactive则是都不需要.value

2. computed:计算属性函数

使用方式类似vue2,但定义有些许不同,用代码演示

import { computed } from 'vue' //导入computed函数 //以下代码书写在setup配置项中 // 写法一:简写 let fullName = computed({ return firstName + lastName }) // 写法二:完整写法 let fullName = computed({ get(){ return firstName + lastName } set(){} })

2. watch:侦听函数

1. 普通watch函数

类似vue2的watch配置项,书写在setup配置项中,需要注意的是,它监听的是一个reactive或ref对象,意思是,在这里侦听时不需要.value,

  • 通过import导入:
import { watch } from 'vue' //导入watch函数 let count = ref(0) //定义一个ref对象 let count1 = ref(18) let person = reactive({ //定义一个代理对象 name: 'wmh', age: 18 })
  • 监听单一属性:
// 监听ref对象 watch(count, (count, oldCount) => { /* ... */ }) // 监听代理对象 watch(person, person => { /* ... */ })

监听reactive包裹的代理对象时,oldValue无法正确获得强制开启深度监视

  • 监听代理对象的某个具体属性:
// 监听person的name属性 watch(() => person.name, (value, oldValue) => { /* ... */ })

监视reactive定义的数据中的某个属性时,deep配置生效(需要手动配置深度监视)
注意,此处oldValue可以正确获得

  • 监听代理对象的某些具体属性:用数组包裹
// 监听person的name和age属性 watch([() => person.name,() => person.age], (value, oldValue) => { /* ... */ })
  • 监听多个属性:用数组包裹
// 监听多个属性 watch([count, count1], ([count, count1], [oldCount, oldCount1]) => { /* ... */ })
2. watchEffect函数

不同于普通的watch函数,既需要指明侦听的属性,也需要指明回调,watchEffect不用指明侦听哪个属性,侦听的回调中用到哪个属性,就侦听哪个属性

import { watchEffect } from 'vue' let name = ref('wmh') let age = ref(18) // 以下代码使用到name和age属性,则会自动监听这两个属性 watchEffect(() => { const x1 = name.value const x2 = age.value })

watchEffect和computed的对比:

  • computed注重的是计算出来的值(回调函数的返回值),所以必须要返回值
  • watchEffect则更加注重过程(回调函数的函数体),所以不需要返回值
http://www.jsqmd.com/news/497502/

相关文章:

  • 【BBF系列协议】TR104 VoIP CPE的配置参数
  • 机器学习11:代价敏感学习
  • 【BBF系列协议】TR157 CWMP的拓展组件对象
  • git、github、npm、node多版本管理
  • minio安装 后台自启动
  • vue3学习笔记 - P2
  • 【读书笔记】高级FPGA设计之面积结构设计
  • c51 --定时器
  • vue3学习笔记 - P3
  • 20252905 2025-2026-2 《网络攻防实践》第一周作业
  • Day15 | 平衡二叉树、二叉树的所有路径、左叶子之和、完全二叉树的节点个数
  • Linux内存管理(78):kcompactd详解
  • Py-Apple Quadruped Robot:低成本开源四足机器人的完整构建指南
  • Python问题总结:关于matplotlib中文字体无法正常显示问题的总结
  • 3.18组会
  • AWS RDS开启审计日志
  • 探索BurpSuite:网络安全测试的瑞士军刀
  • 2026年博士论文10万字怎么降AI?长文降AI的正确打开方式
  • 人工改AI vs 工具降AI:花了8小时和8块钱分别试了一遍
  • Varnish Dashboard: 实时监控和管理Varnish缓存服务器的新利器
  • 微信公众平台测试号的申请与使用
  • 【亲测免费】 TransCoder 项目使用教程
  • 集成开发工具IDEA | Community(社区版,免费)| 试用旗舰版 IntelliJ IDEA 2021.2.2 |历史版本下载 | IDEA全局搜索和替换指定内容,非常方便。
  • 嘎嘎降AI vs 率零 vs 率降:4元价位降AI工具三选一怎么挑
  • REST Client 开源项目教程
  • linuxlinux命令集合
  • 2026年公众号文章被标AI生成怎么办?3款去AI味工具实测推荐
  • YOLOV8训练好的torch模型转换成ONNX、OM格式
  • SuperEasy Local RAG高级配置:自定义Ollama模型与查询优化技巧
  • 探索前沿开发利器:CodeGPT.nvim