易笔记易笔记
首页
文章
分类
标签
首页
文章
分类
标签
AI 1Electron 1JS 2前端 1cesium 2PHP 1CSS 7ThreeJS 2Vue 4Windows 4Vue3 4
Vue中$set原理详解

在Vue开发中,我们经常会遇到这样的问题:直接通过索引设置数组项或者给对象添加新属性时,视图并没有更新。这时我们就需要使用Vue提供的$set方法来解决这个问题。本文将深入探讨Vue中$set的实现原理。

为什么需要$set?

在Vue的响应式系统中,并不是所有数据变化都能被检测到。主要有以下两种情况:

1. 数组索引直接设置

var vm = new Vue({
  data: {
    items: ['a', 'b', 'c']
  }
})

// 这种方式不会触发响应
vm.items[1] = 'x'
分类: Vue标签: Vue
日期: 2025/9/26
Vue 3中ref和reactive的区别详解

在Vue 3的Composition API中,ref和reactive是创建响应式数据的两种主要方式。虽然它们都能实现响应式,但在使用场景和行为上存在一些重要区别。本文将详细探讨这两种API的异同点,帮助开发者更好地理解和使用它们。

ref和reactive的基本概念

ref

ref用于创建一个响应式的引用对象,它可以包装任何类型的值(基本类型或对象类型)。ref返回的对象有一个.value属性,指向内部的值。

分类: Vue标签: Vue 3, Composition API, ref, reactive
日期: 2025/9/26
Vue中的nextTick原理详解

在Vue开发中,我们经常会遇到这样的场景:修改数据后立即操作DOM却发现DOM还未更新。这时我们就需要使用nextTick来解决这个问题。本文将深入探讨Vue中nextTick的实现原理。

什么是nextTick?

Vue在更新DOM时是异步执行的,只要侦听到数据变化,Vue将开启一个队列,并缓冲在同一事件循环中发生的所有数据变更。如果同一个watcher被多次触发,只会被推入到队列中一次。这种在缓冲时去除重复数据对于避免不必要的计算和DOM操作是非常重要的。

然后,在下一个的事件循环"tick"中,Vue刷新队列并执行实际(已去重的)工作。Vue在内部对异步队列尝试使用原生的Promise.then、MutationObserver和setImmediate,如果执行环境不支持,则会采用setTimeout(fn, 0)代替。

分类: Vue标签: Vue
日期: 2025/9/26
TypeScript基础

基本类型

1、布尔类型(boolean):
let flag:boolean=[false|true]

2、数字类型(number):
let num:number=12

3、字符串类型(string):
let str:string='hello world'

4、数组类型(array):
let array:number[]=[1,2]
let list: Array<number> = [1, 2, 3];

5、对象类型:
const obj:{  x:number;  y:number;} = { x: 1, y: 1 };
const obj : {[key:string] : string | number} = {name:'str',age:18};
const {id, name, price}:{  id: string;  name: string;  price: number} = product;

6、元组类型(tuple),元组类型是固定长度的数组,可以指定数组中每个元素的类型:
let tup:[string,number,boolean]=['we',21,false]

7、枚举类型(enum):
定义:enum 枚举变量名{ 枚举类名=枚举值,  枚举类名1=枚举值1}
	enum flag{ success=1, errorM=-1 }
使用:var  变量:枚举类型=枚举变量名.枚举名   ||  var 变量名=枚举变量名.枚举名
	var F:flag=flag.success    //var F=flag.success

例如: enum Weeks {Mon, Tue, Wed, Thu, Fri, Sat, Sun};
console.log(Weeks['Mon']); // => 0
console.log(Weeks[0]); // => 'Mon'
console.log(Weeks.Tue); // => 1

8、任意类型(any)可以赋值给任意变量:
let dom:any=document.getElementById('app')

9、未知(unknown):
let num:unknown

10、null和undefined:
let num:number|undefined|null
let num:number|undefined|nul

11、void类型(函数无返回值):
function fn():void{
  console.log('q'); 
}

12、never类型:never表示其他类型的(包括null和underfined)子类型,表示从未出现过的值,是一个隐含的类型。

注意:大写Boolean Number String 等,用于创建对应的包装对象,一般不用。
分类: Vue标签: Vue
日期: 2025/9/26