npm init vite-app <project-name>
npm install
this.$attrs
this.$slots
this.$emit
const data = ref(initData)
创建一个包含响应式数据的代理对象
initData为非对象时,使用Object.defineProperty监听,只有获取值需要调用.value
,
模板中读取不用加.value
initData为对象时,内部会去调用reactive()
const data = reactive(initObj)
创建一个包含响应式数据(只限于对象类型)的代理对象
使用proxy+Reflect实现数据监视
const data=toref(obj,value)
const data=toref(obj)
computed
配置功能一致import {computed} from 'vue'
setup(){
...
//计算属性 —— 简写
let fullName = computed(()=>{
return ...
})
//计算属性 —— 完整
let fullName = computed({
get(){
},
set(value){
}
})
}
beforeCreate
=>setup()
created
=>setup()
beforeMount
=>onBeforeMount
mounted
=>onMounted
beforeUpdate
=>onBeforeUpdate
updated
=>onUpdated
beforeUnmount
=>onBeforeUnmount
unmounted
=>onUnmounted
shallowReactive
:只处理对象第一层属性的响应式(浅响应式)。shallowRef
:只处理基本数据类型的响应式, 不进行对象的响应式处理。shallowReactive
。shallowRef
。readonly
: 让一个响应式数据变为只读的(深只读)。shallowReadonly
:让一个响应式数据变为只读的(浅只读)。raw:原始
toRaw
reactive
生成的响应式对象转为普通对象。markRaw
function myRef(value){
let timer;//防抖
return customRef((track,trigger)=>{
return{
get(){
track()//追踪
return value
},
set(newValue){
clearTimeout(timer);
timer = setTimeout(() => {
value = newValue;
trigger(); // 触发
}, 500);
}
}
})
}
父组件有一个 provide
选项来提供数据
setup(){
......
let car = reactive({name:'奔驰',price:'40万'})
provide('car',car) // 给自己的后代组件传递数据
......
}
后代组件有一个 inject
选项来使用数据
setup(props,context){
......
const car = inject('car') // 拿到祖先的数据
return {car}
......
}
isRef
: 检查一个值是否为一个 ref
对象isReactive
: 检查一个对象是否是由 reactive
创建的响应式代理isReadonly
: 检查一个对象是否是由 readonly
创建的只读代理isProxy
: 检查一个对象是否是由 reactive
或者 readonly
方法创建的代理Fragment
虚拟元素中<teleport to="移动位置">
<div v-if="isShow" class="mask">
<div class="dialog">
<h3>我是一个弹窗</h3>
<button @click="isShow = false">关闭弹窗</button>
</div>
</div>
</teleport>
等待异步组件时渲染一些额外内容,让应用有更好的用户体验
异步引入组件
import {defineAsyncComponent} from 'vue'
const Child = defineAsyncComponent(()=>import('./components/Child.vue'))
Suspense
包裹组件,并必须配置好default
与 fallback
<template>
<div class="app">
<h3>我是App组件</h3>
<Suspense>
<template v-slot:default>
<Child/>
</template>
<template v-slot:fallback>
<h3>加载中.....</h3>
</template>
</Suspense>
</div>
</template>
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- igat.cn 版权所有 赣ICP备2024042791号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务