您现在的位置是:网站首页>软件开发>前端技术栈>vuevue

解决[Vue warn]:Error in render:

风口下的猪2020-03-07vue

简介

 错题症状

vue渲染异步加载的数据和操作含异步加载数据的dom,这两大类情况,特别容易出现Vue warn]:Error in render: "TypeError: Cannot read property '0' of undefined"

 错题分析

vue在挂载dom树后,异步加载数据和渲染数据是并行的,有时渲染快于异步数据获取,就会出现读不到数据报错的情况。

vue项目中,页面会根据异步请求数据次数进行多次渲染。所以在项目中要特别注意两点:

(1)含异步数据的dom,为保证获取数据先于渲染,一定要加v-if;

(2)想操作含异步数据的dom,一定要在异步获取数据成功后,使用this.$nextTick()将dom操作放在再次渲染后的回调中。如果页面包含多次异步请求,为不影响性能,所有异步请求使用promise封装,待判断全部数据获取后,执行this.$nextTick()确保全部渲染成功后再执行dom操作。

 错题解决方案

(1)视图层加v-if;

(2)dom操作放在this.$nextTick()渲染完成的回调中;

严谨角度讲,dom操作不应该放到created()或mounted()中,当然异步请求次数很少的情况下可以在created()、mounted()里套个setTimeOut或this.$nextTick()。

很赞哦! (0)

  • 软件开发
  • 素质要求
  • 计算机基础
  • 架构
  • 安全
  • 性能
  • 运维
  • 尾页
  • 数据库
  • 开发终端
  • 语言基础
  • 项目管理
  • 产品设计
  • 系统
  • 工作规范
  • 计算机网络
  • 前端技术栈
  • 数据结构
  • 计算机组成原理
  • 后端技术栈
  • 性能优化
  • 安全设计
  • 常见模块
  • 计算机操作系统
  • 服务器
  • python
  • MySQL
  • thinkphp
  • PHP
  • Java
  • JavaScript
  • Windows
  • Linux
  • 特效
  • indexedDB
  • vue
  • 淘宝联盟
  • Ionic
  • Angular
  • 微信小程序
  • 支付宝小程序
  • uni-app
  • css/sass/less
  • 支付
  • socket
  • 爬虫
  • web性能优化
  • 消息推送
  • CVM
  • sqlite
  • Redis
  • 前端基础
  • 基础
  • element
  • Nginx
  • yii2
  • /ponder/index.php/index/catelist/catelist/cateid/10.html

    标签云

    站点信息

    • 文章统计:528篇
    • 移动端访问:扫码进入SQ3R