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

Vue3.0 一些总结 【持续更新】

1. reactive 只适用于对象 (包括数组和内置类型,如 Map 和 Set,它不支持如 string、number 或 boolean 这样的原始类型)

import { reactive } from 'vue'const counter = reactive({count: 0
})console.log(counter.count) // 0
counter.count++

注意:不能替换整个对象:由于 Vue 的响应式跟踪是通过属性访问实现的,必须始终保持对响应式对象的相同引用。不能轻易地“替换”响应式对象,因为这样的话与第一个引用的响应性连接将丢失:

js
let state = reactive({ count: 0 })// 上面的 ({ count: 0 }) 引用将不再被追踪
// (响应性连接已丢失!)
state = reactive({ count: 1 })
对解构操作不友好:当我们将响应式对象的原始类型属性解构为本地变量时,或者将该属性传递给函数时,我们将丢失响应性连接:js
const state = reactive({ count: 0 })// 当解构时,count 已经与 state.count 断开连接
let { count } = state
// 不会影响原始的 state
count++// 该函数接收到的是一个普通的数字
// 并且无法追踪 state.count 的变化
// 我们必须传入整个对象以保持响应性
callSomeFunction(state.count)

解构时也会失去响应式,可以使用toRefs 去转成响应式

2. toRefs

将一个响应式对象转换为一个普通对象,这个普通对象的每个属性都是指向源对象相应属性的 ref。每个单独的 ref 都是使用 toRef() 创建的。
消费者组件可以解构/展开返回的对象而不会失去响应性

const state = reactive({foo: 1,bar: 2
})
return {...toRefs(state)
}

注意toRefs 在调用时只会为源对象上可以枚举的属性创建 ref。如果要为可能还不存在的属性创建 ref,请改用 toRef

3. ref() 则可以接受任何值类型。ref 会返回一个包裹对象,并在 .value 属性下暴露内部值

import { ref } from 'vue'const message = ref('Hello World!')console.log(message.value) // "Hello World!"
message.value = 'Changed'

4. computed

  • 接受一个 getter 函数,返回一个只读的响应式 ref 对象
  const count = ref(1)const plusOne = computed(() => count.value + 1)console.log(plusOne.value) // 2
  • 也可以接受一个带有 get 和 set 函数的对象来创建一个可写的 ref 对象
const count = ref(1)
const plusOne = computed({get: () => count.value + 1,set: (val) => {count.value = val - 1}
})plusOne.value = 1
console.log(count.value) // 0

5. 路由独享守卫 beforeEnter

  {path: '/',name: 'Home',component: Home,beforeEnter: (to, form, next) => { // 路由独享守卫console.log(to, '路由独享守卫');next()}},

6. 得到路由信息 vue3/vue2 区别

vue3
import { useRouter, useRoute } from 'vue-router'
export default {setup() {let router = useRouter(); // router是全局路由实例,是VueRouter实例  let route = useRoute(); // route对象表示当前的路由信息,包含了当前URL解析得到的信息,还有URL匹配到的路由记录console.log(router, route, 'router')router.push('/home') //路由跳转}}vue2
this.$route.params
this.$router.push({path: '/home'params: {id: 1}
})
this.$route.query
this.$router.push({path: '/home'query: {id: 1}
})

7. ref() 获取dom

<template><div class="home"><input type="text" ref="input"></div>
</template>import { ref } from "vue";const input = ref();
console.log(input, 'input')

在这里插入图片描述

http://www.lryc.cn/news/350284.html

相关文章:

  • C++语法|对象的浅拷贝和深拷贝
  • 行为型模式
  • AI大模型日报#0515:Google I/O大会、 Ilya官宣离职、腾讯混元文生图大模型开源
  • 计算机网络-负载均衡算法
  • Excel Module: Iteration #1 EasyExcel生成下拉列表模版时传入动态参数查询下拉数据
  • 【回溯算法】【Python实现】TSP旅行售货员问题
  • Java处理xml
  • 软考中级-软件设计师 (十一)标准化和软件知识产权基础知识
  • pytest教程-46-钩子函数-pytest_sessionstart
  • Windows内核函数 - ASCII字符串和宽字符串
  • 从零开始学习MySQL 事务处理
  • 字符数组以及字符串相关的几个函数
  • AOP面向切面编程
  • C# WinForm —— 15 DateTimePicker 介绍
  • SpringBoot中六种批量更新Mysql 方式效率对比
  • 【SpringBoot】SpringBoot整合jasypt进行重要数据加密
  • 【Go语言入门学习笔记】Part1.梦开始的地方
  • 数据特征降维 | 主成分分析(PCA)附Python代码
  • 当服务实例出现故障时,Nacos如何处理?
  • 遥感数据集制作(Potsdam数据集为例):TIF图像转JPG,TIF标签转PNG,图像重叠裁剪
  • 根据web访问日志,封禁请求量异常的IP,如IP在半小 时后恢复正常则解除封禁
  • 2.go语言初始(二)
  • MQTT对比HTTP
  • 暴力数据结构之二叉树(堆的相关知识)
  • 死锁调试技巧:工作线程和用户界面线程
  • 蓝桥杯-外卖店优先级(简单写法)
  • VueRouter使用总结
  • Flink checkpoint 源码分析- Checkpoint snapshot 处理流程
  • Leaflet.canvaslabel在Ajax异步请求时bindPopup无效的解决办法
  • Go 处理错误