做网站一定要域名嘛,西固网站建设平台,wordpress 文章类主题,郑州网络seoshallowReactive与shallowRef
shallowReactive: 只处理了对象内最外层属性的响应式(也就是浅响应式)
shallowRef: 只处理了value的响应式, 不进行对象的reactive处理
总结:
reactive与ref实现的是深度响应式, 而shallowReactive与shallowRef是浅响应式。
什么时候用浅响应…shallowReactive与shallowRef
shallowReactive: 只处理了对象内最外层属性的响应式(也就是浅响应式)
shallowRef: 只处理了value的响应式, 不进行对象的reactive处理
总结:
reactive与ref实现的是深度响应式, 而shallowReactive与shallowRef是浅响应式。
什么时候用浅响应式呢?
一般情况下使用ref和reactive即可,
如果有一个对象数据, 结构比较深, 但变化时只是外层属性变化 shallowReactive
如果有一个对象数据, 后面会产生新的对象来替换 shallowRef
isReactive:
检查一个对象是否是由 reactive 创建的响应式代理 templatediv stylefont-size: 14px;pm1: {{m1}}/ppm2: {{m2}}/ppm3: {{m3}}/ppm4: {{m4}}/pbutton clickupdate2无法更新/buttonbutton clickupdate更新/buttonbutton clickupdate3有坑能更新/button/div
/template
script langts
/*
shallowReactive与shallowRefshallowReactive: 只处理了对象内最外层属性的响应式(也就是浅响应式)shallowRef: 只处理了value的响应式, 不进行对象的reactive处理
总结:reactive与ref实现的是深度响应式, 而shallowReactive与shallowRef是浅响应式什么时候用浅响应式呢?一般情况下使用ref和reactive即可,如果有一个对象数据, 结构比较深, 但变化时只是外层属性变化 shallowReactive如果有一个对象数据, 后面会产生新的对象来替换 shallowRef
isReactive: 检查一个对象是否是由 reactive 创建的响应式代理
*/import {defineComponent,reactive,ref,shallowReactive,shallowRef,isReactive,
} from vue
// vue3.0版本语法
export default defineComponent({setup () {const m1 reactive({x: 1, y: {z: abc}})const m2 shallowReactive({x: 1, y: {z: abc}})const m3 ref({a1: 2, a2: {a3: abc}})const m4: any shallowRef({a1: 2, a2: {a3: abc}})console.log(isReactive(m1.y))console.log(isReactive(m2.y))console.log(isReactive(m3.value.a2))console.log(isReactive(m4.value.a2))function update() {m1.x m1.x--update // 界面会更新m1.y.z m1.y.z--update // 界面会更新m2.y {z: m2.y.z--update} // 界面会更新m3.value.a2.a3 m3.value.a2.a3--update // 界面会更新m4.value {} // 界面会更新}function update2() {m2.y.z m2--update // 界面本不会更新m4.value.a1 1 // 界面本不会更新console.log(m2,m4);console.log(m4.value);}function update3() {m1.x m1.x--update // 界面会更新// m1.y.z m1.y.z--update // 界面会更新// m2.y {z: m2.y.z--update} // 界面会更新// m3.value.a2.a3 m3.value.a2.a3--update // 界面会更新// m4.value {} // 界面会更新// 模板更新的机制是只要模板里有一个具有响应式的值更新了// 就把模板里的对象去源数据里面重新取一遍值。重新取值的时候// m2.y.z 被修改了确实没有响应性页面取到是最新的值。m2.y.z m2--update // 界面本不会更新(由于m1响应式更新了页面导致会更新)m4.value.a1 1 // 界面本不会更新(由于m1响应式更新了页面导致会更新)console.log(m2,m4);console.log(m4.value);}return {m1,m2,m3,m4,update,update2,update3}}
})
/script
点击》无法更新按钮
可以看到打印数据改变了页面没有响应式更新。 点击》更新按钮
可以看到ref和reactive的数据响应更新shallowRef对象.value是响应式更新的
shallowReactive 对象内最外层属性是响应式更新的。 点击》有坑能更新按钮
界面会更新不该更新m2.y.z、m4.value.a1的也更新了
因为模板更新的机制是只要模板里有一个具有响应式的值更新了就把模板里的对象去源数据里面重新取一遍值。重新取值的时候如m2.y.z 被修改了确实没有响应性但页面取到是最新的值。 为了规避这个问题 建议最好把响应式和非响应式的更新分开写。 欢迎关注我的原创文章小伙伴们我是一名热衷于前端开发的作者致力于分享我的知识和经验帮助其他学习前端的小伙伴们。在我的文章中你将会找到大量关于前端开发的精彩内容。
学习前端技术是现代互联网时代中非常重要的一项技能。无论你是想成为一名专业的前端工程师还是仅仅对前端开发感兴趣我的文章将能为你提供宝贵的指导和知识。
在我的文章中你将会学到如何使用HTML、CSS和JavaScript创建精美的网页。我将深入讲解每个语言的基础知识并提供一些实用技巧和最佳实践。无论你是初学者还是有一定经验的开发者我的文章都能够满足你的学习需求。
此外我还会分享一些关于前端开发的最新动态和行业趋势。互联网技术在不断发展新的框架和工具层出不穷。通过我的文章你将会了解到最新的前端技术趋势并了解如何应对这些变化。
我深知学习前端不易因此我将尽力以简洁明了的方式解释复杂的概念并提供一些易于理解的实例和案例。我希望我的文章能够帮助你更快地理解前端开发并提升你的技能。
如果你想了解更多关于前端开发的内容不妨关注我的原创文章。我会不定期更新为你带来最新的前端技术和知识。感谢你的关注和支持我们一起探讨交流技术共同进步期待与你一同探索前端开发的奇妙世界