首页 > 其他分享 >Vue3知识点

Vue3知识点

时间:2024-08-28 14:51:39浏览次数:6  
标签:知识点 对象 响应 Vue3 组件 数据 监听 属性

什么是Vue3

用于构建用户界面的渐进式框架

Vue2和Vue3的区别

  • 响应式系统的重写:使用Proxy代替defineProperty实现数据响应式。

  • 重写虚拟DOM的实现和Tree-Shaking

  • 销毁和卸载的改进,销毁前不需要执行额外的操作

  • 生命周期的添加

  • 新增的API

  • vue3是组合式api,vue2是选项式api

  • setup

    • 每一次组件实例化被调用,会初始配置和逻辑处理,类似于Options API中的beforeCreate和Created的钩子函数功能。
  • reactive (reactive取出的数据都是非响应式的)

    • 定义引用类型,可将非响应式数据转化为响应式数据
    • 深层响应式
    • 局限性:
      • 不支持基本类型数据
      • 性能开销大
      • 浏览器限制
  • ref

    • 将数据从非响应式转换为响应式
    • 在js中使用加上 . value ,页面标签中不需要加value
  • 响应式数据和原始数据

    • 响应式数据
      • 当逻辑层代码发生改变时,会影响视图层
    • 原始数据
      • 逻辑层代码发生变化不会影响视图层
  • nextTick()

    • 在状态改变后立即使用,以等待DOM更新完成,监听下一次页面渲染
  • 计算属性 computed()

    • computed(()=>{}) 相当于get
    • computed ( { get(){},set(){} } )
  • 监听属性 watch()

    • watch(第一个参数:监听的数据(如果是ref对象,直接指定,如果是reactive对象中的属性,必须通过函数来指定,监听多个数据用数组包起来),第二个参数:回调函数(newVal,oldVal),第三个参数对象{immediate为true,来指定初始时立即执行第一次,deep深度监听})
    • watchEffect(()=>{}),浅监听,监听页面中的所有响应式数据,进入页面时立即执行一次。

生命周期

  • setup
  • 相当于beforeCreate个created
  • onbeforMmount
  • onMounted
  • onBeforeUpdate
  • onBeforeUnmount
  • onUnmounted

获取元素和组件

  • ref在元素或组件中添加ref属性,然后直接声明变量即可
  • 获取组件中的数据和方法,需要在组件中暴露出去数据和方法
    • defineExpose({ 数据和方法 })

reactive 声明响应式对象,深层响应式 只能定义引用类型。reactive({ })


Vue2对象直接新添加的属性或者删除已有的属性,界面不会自动更新

直接通过下标替换元素或更新length,页面不会自动更新

toRefs

  • 将一个响应式的reactive对象的所有原始属性转换为响应式的ref属性。

hook

  • 类似于Vue2中的混入
  • 将可复用功能的代码进行封装。

Vue3 路由跳转传参

  • 声明式
    • router-link t0
  • 函数式
    • useRoter()
  • 接收参数
    • useRoute()
  • a1

组合式API

  • readonly和shallowReadonly

    • readonly 会递归地将所有的属性都转换为只读响应式对象,包括嵌套对象的属性也是只读的(所有只读)。
    • shallowReadonly 只会将根级属性设置为只读响应式对象,嵌套对象的属性仍然是可修改的(一层只读)。
  • shallowReactive与shallowRef

    • shallowReactive 只会对根属性进行响应式处理,而不会递归到对象的嵌套属性
    • shallowRef 对该对象内部属性的修改不会被监听,只有重新赋值整个对象的操作才会引起响应式更新。
  • toRaw和markRaw

    • toRaw 将响应式数据转换成原始数据
    • markRaw 标记一个对象,使其永远不会被转化为响应式对象
  • toRef和toRefs 用于创建ref对象的函数

    • toRef(数据,数据里面的属性)
    • toRefs(数据)
  • provide和inject 用于组件间传递参数

    • provide必须在setup里面书写,provide(属性名,属性值)传递数据
    • inject(属性名)接收数据

新api

  • fragment 片段

    • 允许我们在组件中返回多个子元素
  • Teleport 瞬移

    • 允许我们将组件的内容最见到任意DOM元素中

Pinia 小菠萝

  • defineStore(‘id’,{state:()=>({count:0}), getters:{},actions:{},persist:true })
  • defineStore(‘id’,()=>{ return { } },{ persist:true})
  • pinia本地存储
    • 下载插件 persist
    • npm install pinia-plugin-persistedstate
    • 在main.js目录下添加

父子组件传参

  • 父传子
  • 在父组件的子标签中自定义一个属性
  • 在子组件中用defineProps()接受
    • defineProps({ })
    • Ts写法 defineProps<{ }>()
  • 子传父
    • 在父组件的子标签中自定义一个方法,方法里面的参数是子标签的传值
    • 使用defineEmits()
      • defineEmits([ ])
      • ts defineEmits<{ ( e:'事件名’,参数:参数类型 ):void }>()

keepAlive

  • 缓存组件的内置抽象组件。它可以在包含被包裹组件的组件树上,将其所有子组件都缓存起来,而不会销毁它们
  • 生命周期
    • onActivated:当组件被激活(插入到DOM)时调用。
    • onDeacitvated:当组件被停用(从DOM中删掉)时调用。

标签:知识点,对象,响应,Vue3,组件,数据,监听,属性
From: https://blog.csdn.net/weixin_66030561/article/details/141640822

相关文章

  • Vue3项目开发——新闻发布管理系统(四)
    文章目录七、登录&注册页面设计开发2、登录&注册页面设计3、表单校验规则设置七、登录&注册页面设计开发2、登录&注册页面设计登录页面如下:点击“注册→”,切换到注册页面:点击“←返回”,又可以切换回登录页面。页面布局是这么设计的:1、整个页面通过L......
  • 【音视频通话】使用asp.net core 8+vue3 实现高效音视频通话
    引言在三年前,写智能小车的时候,当时小车上有一个摄像头需要采集,实现推拉流的操作,技术选型当时第一版用的是nginx的rtmp的推拉流,服务器的配置环境是centos,2H4G3M的一个配置,nginx的rtmp的延迟是20秒,超慢,后来研究了SRS以及ZLMediaKit这两个开源的推拉流服务器,没记错的话,两个......
  • vue3 自定义hooks(组合式函数)
    什么是hooks自定义hooks是Vue3组合式函数的别称。在Vue应用的概念中,“组合式函数”(Composables)是一个利用Vue的组合式API来封装和复用有状态逻辑的函数。命名规范组合式函数约定用驼峰命名法命名,并以“use”作为开头。以便识别它们是可复用的逻辑单元。例如,u......
  • MalusAdmin--- .NET 和 Vue3 实现的开源权限管理系统
    前言今天推荐一款用.NET和Vue3实现的开源权限管理系统。它的界面清爽干净,功能强大,还具备灵活的角色权限分配功能,能够满足不同规模企业的管理需求。无论你是开发新手还是大神,都能轻松上手,快速搭建起自己的权限管理体系。别再犹豫了,赶快来试试吧!项目简介Malus是海棠的意思,顾......
  • Vue3的学习---10
    10.Vuex10.1Vuex简介10.1.1Vuex概述Vuex是Vue.js应用程序的状态管理模式+库。它作为中央存储库,用于管理应用程序中所有组件的状态,并以可预测的方式进行状态变更。Vuex的设计理念是基于Flux架构,主要由以下几个核心概念组成:State(状态):存储应用程序的所有状态数据。......
  • 基于Java Vue3学生宿舍管理系统
    一、作品包含源码+数据库+设计文档万字+全套环境和工具资源+部署教程二、项目技术前端技术:Html、Css、Js、Vue3、Element-ui数据库:MySQL后端技术:Java、SpringBoot、MyBatis三、运行环境开发工具:IDEA/eclipse数据库:MySQL8.0数据库管理工具:Navicat10以上版本环境配置......
  • 基于Java Vue3学生宿舍管理系统
    一、作品包含源码+数据库+设计文档万字+全套环境和工具资源+部署教程二、项目技术前端技术:Html、Css、Js、Vue3、Element-ui数据库:MySQL后端技术:Java、SpringBoot、MyBatis三、运行环境开发工具:IDEA/eclipse数据库:MySQL8.0数据库管理工具:Navicat10以上版本环境配置......
  • Vue3的学习---9
    9.Vue-cli脚手架9.1搭建Vue-Cli脚手架Vue-cli是一个官方提供的脚手架工具,用于快速搭建Vue.js项目。它集成了项目初始化、开发服务器、构建工具、代码检查等功能,使得开发者可以更高效地进行Vue.js应用的开发。Vue-cli官网:https://cli.vuejs.org/zh/VueCLI的主要功能包括:项......
  • Vue3项目启动失败的解决方案
    看了我创建Vue3项目的朋友们,你们是否也会出现以下情况呢,没事,我下面提供解决方案下载|Node.js中文网先把node版本安装到最新在vscode打开终端后输入yarn-s等安装好后输入yarndev启动项目即可项目启动成功了......
  • Vant4+Vue3 实现年月日时分时间范围控件
    <van-popup v-model:show="showDatePick" position="bottom" :overlay-style="{zIndex:1000}"> <van-picker-group title="时间范围" :tabs="['开始日期','结束日期']" @confirm="on......