网站公司备案甘肃省住房与城乡建设厅网站首页
网站公司备案,甘肃省住房与城乡建设厅网站首页,网站建设用到的工具,广告电商Vue3 响应式核心#xff1a;ref与reactive全方位对比及实战指南 先记住一句话 Vue3 里想让数据变了页面自动更新#xff0c;就两个工具#xff1a; ref#xff08;全能#xff09; reactive#xff08;只给对象用#xff09; 1. ref 是什么#xff1f;
你可以把它理解…Vue3 响应式核心ref与reactive全方位对比及实战指南先记住一句话 Vue3 里想让数据变了页面自动更新就两个工具 ref全能 reactive只给对象用1. ref 是什么你可以把它理解成一个带“监听功能”的盒子不管你放什么数字、字符串、对象、数组都行盒子本身不变变的是里面的东西在 JS 里要写 .value 才能拿到内容模板里自动拆盒子不用写 .value例子jsconstcountref(0)count.value// JS 里必须 .valuehtml{{count}}!--模板自动拆包--优点可以整个换掉里面的值基本类型只能用它2. reactive 是什么理解成给一个对象“套上监控外套”只能给对象/数组用不用 .value 直接改属性深层属性也是响应式例子jsconstuserreactive({name:张三,age:18})user.age19// 直接改不用 .value缺点不能整个换掉对象一换 外套丢了 不响应了3. 最关键区别能不能整体替换ref ✅ 可以整体换jsconstformref({name:,age:})form.value{name:新,age:20}盒子还在只是换了内容 → 依旧响应reactive ❌ 不能整体换jsconstformreactive({name:,age:})form{name:新,age:20}// 完蛋响应断了你把整个对象换了监控外套没跟着换4. 解构会丢响应性超级常见坑不管是 ref 还是 reactive直接解构都会变普通变量不再响应。错误jsconststatereactive({count:0})const{count}state// 变成普通数字count// 页面不更新正确jsimport{toRefs}fromvueconst{count}toRefs(state)count.value// 正常响应toRefs 的作用把 reactive 里的每个属性都变成 ref5 ref和reactive 所以真正的关系是ref 是外层包装真正做响应式的还是 reactive Proxy一句话总结ref 给基本类型套了个对象壳再用 reactive 代理这个壳。因为 reactive不能处理基本数据类型ref包装成对象就可以了5. 最简单使用口诀基本类型数字、字符串、布尔→ 用 ref对象、表单、不想写 .value → 用 reactive需要重置/整体替换 → 用 ref要解构 → 用 toRefs6.总结ref 万能盒子能整体替换基本类型必用reactive 对象外套不能整体替换解构必用 toRefs基本类型、对象、数组全都能用 ref 变成响应式如果我处理的是对象又不想写 .value就可以用 reactive但如果需要替换整个对象必须用 ref因为只有 ref 替换之后不会丢失响应性模板里用 ref 包的对象不需要 .value模板自动解包