如何解决vue $refs报错问题

vue $refs报错的解决办法:1、打开相应的代码文件,然后加上“this.$nextTick();”;2、在mounted()钩子函数中调用即可。

如何解决vue $refs报错问题

本教程操作环境:windows7系统、vue2.5.17版,DELL G3电脑。

【相关文章推荐:vue.js】

项目开发中遇到,cannot read property ‘style’ of undefined的问题。我是怎么解决的,不多说,直接贴代码。

created() {  this.getAddBG();},methods: {  getAddBG() {    let config = {      service: "200017",      h5Type: "activity"    };    this.$http.featchH5Post(config).then(res => {      let list = res.data.data.advertiseList;      list.forEach(item => {        this.$refs[          item.name        ].style.backgroundImage = `url(${item.defaultPicture})`;      });    });  }}

登录后复制

解决办法:

立即学习“前端免费学习笔记(深入)”;

第一种方法:加上this.$nextTick();

created() {  this.$nextTick(() => {    this.getAddBG();  });}

登录后复制

第二种方法:在mounted()钩子函数中调用。

mounted() {  this.getAddBG();}

登录后复制

调查分析原因:

1、先从vue生命周期与Vue.nextTick()说起。

created()钩子函数执行的时候DOM并未进行任何渲染,此时不能进行DOM操作。

在Vue生命周期的created()钩子函数进行DOM操作一定要放在Vue.nextTick()的回调函数中。

mounted()钩子函数执行时所有的DOM挂载和渲染都已经完成,此时在该钩子函数中进行任何DOM操作都不会有问题。

2、Vue官方文档的解释。

Vue异步执行DOM更新。只要观察到数据变化,Vue将开启一个队列,并缓冲在同一事件循环中发生的所有数据改变。如果同一个watcher被多次触发,只会被推入到队列中一次。这种在缓冲时去除重复数据对于避免不必要的计算和DOM操作上非常重要。然后在下一个事件循环tick中,Vue刷新队列并执行实际(已去重)工作。Vue在内部尝试对异步队列使用原生的Promise.then和MessageChannel,如果执行环境不支持,会采用setTimeout(fn, 0)代替。

Vue.nextTick()用于延迟执行一段代码。

以上就是如何解决vue $refs报错问题的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/3020841.html

(0)
上一篇 2025年3月13日 05:39:58
下一篇 2025年3月7日 09:30:18

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 如何解决vue文件里使用背景报错问题

    vue文件里使用背景报错的解决办法:1、在webpack.prod.conf.js文件中output里添加“publicPath:’./’”;2、在utils.js文件里添加“publicPath:’..…

    2025年3月13日 编程技术
    200
  • 什么是 vue

    vue是Vue.js的简称,是一个用于创建用户界面的开源JavaScript框架,也是一个创建单页应用的Web应用框架;vue所关注的核心是MVC模式中的视图层,同时它也能方便地获取数据更新,并通过组件内部特定的方法实现视图与模型的交互。 …

    2025年3月13日
    200
  • 如何解决vue中layui报错问题

    vue中layui报错的解决办法:首先把layui文件放在static文件下;然后在html文件中用link和script标签的方式引入layui即可在vue中正常使用layui。 本教程操作环境:windows7系统、vue2.0版,DE…

    2025年3月13日
    200
  • .vue文件可以写注释吗

    vue文件可以写注释;在每个代码块内,注释的时候,需要使用各自语言的注释语法去注释;比如在文件最顶部注释的时候用HTML的注释语法“”即可。 本教程操作环境:windows7系统、vue2.0版,DELL G3电脑。 【相关文章推荐:vue…

    2025年3月13日
    200
  • vue.use中发生了什么

    vue.use为注册全局插件所用,接收函数或者一个包含install属性的对象为参数;如果参数带有install就执行install,如果没有就直接将参数当install执行;并且第一个参数始终为vue对象,注册过的插件不会重新注册。 本教…

    2025年3月13日
    200
  • vue收费的吗

    vue是不收费的,开源的;不过用户也可以成为赞助者,在vue的官网上有成为赞助者的链接;Vue是一套用于构建用户界面的渐进式JavaScript框架,而与其它大型框架不同的是,Vue被设计为可以自底向上逐层应用。 本教程操作环境:windo…

    2025年3月13日
    200
  • vue有react native吗

    vue和React都有支持native的方案,React有React native,而Vue有weex;weex是阿里巴巴开源的一套构建高性能、可扩展的原生应用跨平台开发方案。 本文操作环境:windows7系统、vue2.0版本、Dell…

    2025年3月13日
    200
  • vue.use是什么

    vue.use是官方提供给开发者的一个api,用来注册、安装类型Vuex、vue-router、ElementUI之类的插件的,其使用语法是“Vue.use(plugin)”。 本文操作环境:Windows7系统、vue2.0、Dell G…

    2025年3月13日
    200
  • 为什么vue.js报错

    vue.js报错是因为项目中不识别es6的扩展运算符,其解决办法就是通过“cnpm install babel-preset-es2015 –save-dev”方法下载es6的依赖项即可。 本文操作环境:Windows7系统、v…

    2025年3月13日
    200
  • vue-cli-service不是内部或外部命令怎么解决

    原因和解决方法:1、项目没有执行“npm install”,找不到相关的依赖包;只需要执行一下“npm install”即可。2、项目的依赖包损坏;需要先删除node_modules文件夹, 然后执行“npm install”命令重新安装。…

    2025年3月13日
    200

发表回复

登录后才能评论