上一篇
Vue 3采用ES6 Proxy API替代Vue 2的Object.defineProperty
,实现更全面的数据劫持:
// 响应式对象创建示例 function reactive(target) { return new Proxy(target, { get(obj, key) { track(obj, key); // 依赖收集 return Reflect.get(obj, key); }, set(obj, key, value) { Reflect.set(obj, key, value); trigger(obj, key); // 触发更新 return true; } }); }
v-model
写法:<script setup> const model = defineModel(); // 一行代码实现双向绑定 </script> <template> <input v-model="model" /> </template>
const bigData = shallowRef({ /* 10,000条数据 */ });
import { toRaw } from 'vue'; console.log(toRaw(reactiveObj)); // 输出原始对象
const sortedList = computed(() => { return [...bigData.value].sort((a, b) => a.id - b.id); });
watch(someRef, (newVal, oldVal) => { // 深度监听对象/数组变化 }, { deep: true });
@media screen and (max-width: 768px) { .container { flex-direction: column; } }
.element { width: 50vw; /* 视口宽度50% */ height: 100vh; /* 视口高度100% */ }
<picture> <source media="(max-width: 600px)" srcset="small.jpg"> <img src="large.jpg" alt="自适应图片"> </picture>
watchEffect((onCleanup) => { const timer = setInterval(() => { /* 定时任务 */ }, 1000); onCleanup(() => clearInterval(timer)); // 清理副作用 });
const unwatch = watchEffect(() => { console.log(obj.count); }, { onTrack(e) { console.log('依赖追踪:', e); }, onTrigger(e) { console.log('更新触发:', e); } });
const { data: posts, isLoading } = useQuery({ queryKey: ['posts'], queryFn: fetchPosts });
<template> <amap-map :center="center" @click="handleMapClick"></amap-map> </template>
Vue 3通过Proxy和依赖追踪机制,将响应式系统推向新高度,结合精准的性能控制、生态工具扩展及响应式设计原则,Vue持续引领前端开发效率与用户体验的提升,立即尝试Vue 3.4的defineModel()
和shallowRef
,感受响应式编程的极致简洁! 🚀
本文由 业务大全 于2025-08-26发表在【云服务器提供商】,文中图片由(业务大全)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vds.7tqx.com/wenda/739622.html
发表评论