Vue渲染失败的原因是什么及如何解决


本篇内容介绍了“Vue渲染失败的原因是什么及如何解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在进行数据双向绑定中,常遇到当数据变了,页面却没有同步渲染的情况。首先Vue 的数据双向绑定原理 是分为1.observe2.deps3.watcher在observe中,会通过Object.keys()获取所有的属性push一个订阅器 到 deps中,我在created的钩子函数中定义了this.a = 1,在btn中添加了事件改变this.a,此时观察到页面未渲染。原因:Vue 无法检测 property 的添加或移除。由于 Vue 会在初始化实例时对 property 执行 getter/setter 转化,所以 property 必须在 data 对象上存在才能让 Vue 将它转换为响应式的。解决:在data中定义属性a,此时点击按钮页面会进行同步渲染。所以以下操作,页面也没办法同步渲染
{{value}}
解决:1.在data中obj默认生成定义一个c, obj:{ a:1, b:2,c:’ ‘ }直接渲染的话,会渲染出一个空的dom元素,所以最好在computed中进行下处理2.上免费云主机域名述方式比较麻烦,Vue提供了原生的方法处理 该方法可以向向嵌套对象添加响应式 property。3.若是要删除属性b,采用直接 this.obj.b = ‘ ‘的方式,但是最好能结合下计算属性的方法避免生成无用的标签。除此之外,Vue采用了另一种方法也可以达到想要的效果相当于重新为obj指向了新的对象,此时查看控制台也没有空的标签产生。当你直接去改变arr[i]的某个值时,并不会触发响应渲染
{{i}}
原因:Vue 不能检测以下数组的变动:当你利用索引直接设置一个数组项时,例如:vm.items[indexOfItem] = newValue当你修改数组的长度时,例如:vm.items.length = newLength解决:1.采用上述this.$set方法2.采用splice以下方法操作数组都可触发响应,直接给数组重新赋值也可以触发响应 (this.arr = newArr)1.push()2.pop()3.shift()4.unshift()5.splice() 拼接6.sort() 将…分类7.reverse() 颠倒 反转以上就是容易导致渲染出错的几种情况和解决方法,当数据发生改变而页面没有渲染的时候,要分析是数据响应的哪一步出现了问题。扩展:异步更新(就是当数据发生改变还没有渲染到dom的时候,此时去获取那个dom元素的值是旧的值)可以用 this.$nextTick(fn(){})来获取新的值this.$nextTick(fn(){})返回一个Promise对象,所以可以结合async await结合使用[Vue warn]: Error in render: “TypeError: Cannot read property ‘1’ of undefined”组件中,使用异步加载数据渲染组件。在组件第一次渲染时,数据对象还没有被赋值,此时组件渲染会因为缺少数据报错。用v-if控制,在异步拿到数据之前,不渲染该组件。“Vue渲染失败的原因是什么及如何解决”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注百云主机网站,小编将为大家输出更多高质量的实用文章!

相关推荐: javaScript如何设置css不可见

这篇文章主要介绍“javaScript如何设置css不可见”,在日常操作中,相信很多人在javaScript如何设置css不可见问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”javaScript如何设置css不可见”的疑惑有所帮…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 03/10 21:02
下一篇 03/10 21:03

相关推荐