You may have an infinite update loop in a component render function.

3,327 阅读1分钟

今天遇到一个问题: You may have an infinite update loop in a component render function. 网上虽然没有和我如出一辙的使用场景,但思想是差不多的。经过查资料终于解决,在此记录一下。

使用场景: el-tooltip在某些情况下可用,某些情况下禁用,出现上述报错的代码如下:

html:

<el-tooltip
  effect="dark"
  :content="getCartStatus(scope.row)"
  placement="top"
  :disabled="disCartTooltip">
  </el-tooltip>
  
 js:
 getCartStatus(course) {
    this.disCartTooltip = course.isInCart === 1;
 },

原因是:

不停地更新变量状态,需要不停地渲染。

解决方法: 在渲染以前更新数据状态。在我的实例中,就是先告诉浏览器el-tooltip是否可用,如果可用,才去告诉浏览器hover的内容是什么。 代码如下:

<el-tooltip
  effect="dark"
  :content="getCartStatus(scope.row)"
  placement="top"
  :disabled="scope.row.isInCart === 1">
</el-tooltip>