目录Ⅰ. ref、Reactive ( 递归监听 )Ⅱ. isRef、isReactive ( 判断 )Ⅲ. toRef 和 toRefs ( 解构 )Ⅳ. toRaw 、 mark
import {ref,reactive} from 'Vue';
setup() {
const num = ref(123);
num.value = 456;
const obj = reactive({num:123});
obj.value = 456;
}
import {isRef,isReactive} from 'vue';
setup() {
const num = ref(123)
console.log(isRef(num)) // => true
}
toRef (一个属性)
import { toRef , reactive } from 'vue';
setup() {
const obj = reactive({ width:10, height:20 })
const width = toRef(obj,'width')
return {
width
}
}
toRefs ( 所有 )
import { toRefs , reactive } from 'vue';
setup() {
const obj = reactive({ width:10, height:20 })
const { width, height }= toRefs(obj)
return {
width, height
}
}
import { toRefs , reactive } from 'vue';
setup() {
const obj = reactive({ width:10, height:20 })
return {
...toRefs(obj)
}
}
toRaw ( 不影响本身 )
import {toRaw} from 'vue';
setup(){
const num1 = ref(123)
const num2 = toRaw(num1)
console.log(num2 === 123) //=>true
}
markRaw ( 添加 非响应对象 属性 )
import { markRaw, reactive } from "vue";
setup(){
const obj = reactive({ num:1 }); //让数据无法被追踪
obj.noUpdate = markRaw({num:1});
function add() {
obj.num++; // 页面数据 会更新
obj.noUpdate.num++; //页面数据 不会更新
}
return { obj , add }
}
const aaa = ref('abc');
const bbb = unref(aaa);
shallowRef 、shallowReactive(非递归监听)
import {shallowRef,shallowReactive} from 'vue';
setup(){
const obj1 = shallowRef({a:1,b:{c:2})
const obj2 = shallowReactive({a:1,b:{c:2})
obj1.value.a = 2 //页面未更新
obj2.b.c = 3 //页面未更新
}
import {triggerRef, shallowRef} from 'vue';
setup(){
const obj1 = shallowRef({a:1,b:{c:2})
obj1.value.a = 2 //页面没有发生更新,因为只监听value第一层
triggerRef(obj1); // 强制更新
到此这篇关于vue3常用响应式对象的api的文章就介绍到这了,更多相关vue3响应式对象api内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
--结束END--
本文标题: vue3常用响应式对象的api,你全用过了吗
本文链接: https://lsjlt.com/news/193841.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-01-12
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0