使用Vue组件渲染函数时无限循环

2024-05-04

我正在使用 Vue 组件来渲染一些表头,如下所示:

render (createElement) {
  return createElement('div', { class: 'header' },
    Array.apply(null, { length: this.initHours.length }).map(() => {
      return createElement('div', { class: 'frame' }, this.getHourIndex() )
    })
  )
}

问题是,当 console.log 在 hourIndex (通过数组运行)上完成时,将进入无限循环。

The getHourIndex函数是:

getHourIndex () {
  const headerData = this.initHours[this.hourIndex]
  this.hourIndex++
  console.log(this.hourIndex) /// this is what's telling me it's an infinite loop
  return headerData
}

任何有关为什么要执行此无限循环(考虑 hourIndex 数组只有 25 个元素)的说明都将受到赞赏。


每当组件呈现反应性数据时,如果数据发生变化,它也必须重新呈现该数据。这是反应性的一部分。因此渲染过程本身不应该更改数据,否则会出现无限循环:1)渲染,2)数据更改,3)导致重新渲染,4)数据更改,无限循环。

这就是这段代码中发生的情况,因为渲染函数递增this.hourIndex:

this.hourIndex++

如果您只需要索引,请从map:

Array.apply(null, { length: this.initHours.length }).map((_, index) => {
  return createElement('div', { class: 'frame' }, index )
})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用Vue组件渲染函数时无限循环 的相关文章

随机推荐

  • 检测字符串中的所有大写字母

    我在尝试在 JavaScript 中编写正则表达式时遇到问题 该正则表达式可以检测以全部大写字母键入的至少 2 个字符的整个单词 这是我尝试过的并且似乎有效 b Wa z0 9 b 但是 我会检测用户是否开始字符串 我喜欢你 因为 I 是大
  • Objective-C 中如何检查一个字符是否为数字?

    我需要检查一个字符是否是数字 NSString strTest Test55 char c strTest characterAtIndex 4 我需要找出 c 是否是数字 我怎样才能在 Objective C 中实现这个检查 Note 返
  • Android 模拟器冻结

    在上一个 SDK 版本发布之前 我的 Android 模拟器在 x86 架构上运行得非常好 安装了 Intel HAXM 并在 AVD Manager 中为设备启用了 GPU 使用最新的 SDK 版本 我重新安装了 Windows 从 8
  • 如何点击粘贴?它适用于谷歌文档

    我希望能够在用户单击时启动真正的粘贴事件 我可以理解这可能是一个安全问题 因为如果任何网页可以访问用户剪贴板 那就不好了 所以我认为所有浏览器都不允许访问剪贴板数据 但例如在 google 文档 在类似 word 的应用程序中 中 我可以从
  • 如何使水平条形图可滚动?

    目前正在尝试使用 MPAndroidChart 实现 Horizo ntalBarChart 但是 条形图太多 无法全部显示在屏幕上 仅当我放大时 Horizo ntalBarChart 才会滚动 但永远不会超过屏幕上已有的内容 不确定这是
  • Powershell send-mailmessage - 向多个收件人发送电子邮件

    我有这个 powershell 脚本来发送带有附件的电子邮件 但是当我添加多个收件人时 只有第一个收件人收到消息 我已经阅读了文档 但仍然无法弄清楚 谢谢 recipients Marcel lt email protected cdn c
  • 地图中的最大元素数

    GO 中的 Map 最多可以存储多少个元素 如果我需要经常从 Map 访问数据 那么在长时间运行的程序中不断向 Map 添加项目并从中检索项目是一个好主意吗 除了map length类型的最大值之外 map中的元素数量没有理论上的限制 in
  • Python 原始字符串和尾随反斜杠[重复]

    这个问题在这里已经有答案了 我曾经遇到过一些东西 想知道它是否是一个 Python bug 或者至少是一个错误功能 我很好奇是否有人知道这种行为的任何理由 我刚刚在阅读 Code Like a Pythonista 时想到了这一点 到目前为
  • 在龙卷风下运行 Pyramid WSGI 应用程序

    Pyramid 使用它自己的 Waitress Web 服务器进行开发 但我想在 Tornado 下为我的 WSGI 应用程序提供服务 我想我应该使用 pserve ini 文件配置它 但我无法让它工作 Pyramid 应用程序可以轻松地从
  • 如何选择使用 C# 的 CodeDom 编译器的目标框架?

    因此 我有一个用 C 编写的 CodeDOM 编译器 它应该根据其资源之一编译另一个应用程序 如何更改资源 或编译器输出的可执行文件 的目标 NET 框架 您可以使用以下命令将选项传递给编译器以下构造函数 http msdn microso
  • 是否可以在我的 Azure DevOps 构建管道“发布工件”任务中有条件地设置工件名称?

    我想知道是否可以在 Azure DevOps 构建管道 发布工件 任务中有条件地设置构建工件的名称 我想根据构建管道的输入生成不同的工件 比如说 根据输入管道变量 我想生成三个工件之一 红色 蓝色 绿色 是否可以根据输入变量指定在我的 发布
  • django-storages boto3 访问私有文件的文件 url

    我正在尝试在我创建的测试模型中获取文件的生成 URL 我正在尝试通过以下方式获取文件的正确网址 modelobject file url如果文件是公开的 它确实会给我正确的网址 但是如果文件是私有的 它不会自动为我生成签名的网址 这通常是如
  • 如何获取 C# 项目之间的依赖关系图

    我有一个相当复杂的应用程序 它已分解为多个组件 每个组件都有一个解决方案文件 其中包含一堆项目 所以我喜欢将其视为一个包含多个项目 dll 的组件 还有一个 通用 组件 所有其他组件都依赖于 common 所以编译是这样的 nant com
  • 我应该测试 Spring Boot 应用程序的 main() 方法吗?如何测试?

    当我创建 Spring Boot 应用程序时 它会生成 2 个类 SpringBootApplication public class App public static void main String args SpringApplic
  • Mongoose Date.now 时间不准确

    在过去的两个小时里 我一直在抓狂 起初我以为 Moment js 是没有返回正确时间的罪魁祸首 但其实是 mongoose Date now 做了一些邪恶的事情 这是代码 const moment require moment const
  • D3:使用 d3-tile 缩放到边界框

    我已成功将 D3 矢量 地图分层到从 Mapbox 提取图块的 d3 tile 光栅 地图之上 手动缩放效果非常好 矢量和光栅都是同步的 我现在正在尝试实施迈克 博斯托克 缩放到边界框 https bl ocks org mbostock
  • 复杂C语法的含义[重复]

    这个问题在这里已经有答案了 可能的重复 这个C语句是什么意思 https stackoverflow com questions 8249483 what does this c statement mean 这个表达是什么意思 char
  • 使用 Python 解压缩数据包的 gzip 有效负载

    我目前正在开发一个程序 该程序采用 pcap 文件并使用 scapy 包按 ip 分离出所有数据包 我想解压缩使用 gzip 包压缩的有效负载 我可以判断有效负载是否经过 gzip 压缩 因为它包含 Content Encoding gzi
  • JavaScript 中的对象解构[重复]

    这个问题在这里已经有答案了 gt a a true Statement lt a true 上面的语句是赋值true to a 为什么上面的语句在chrome控制台中没有报错 虽然下面的语句给出了错误 gt a a true Stateme
  • 使用Vue组件渲染函数时无限循环

    我正在使用 Vue 组件来渲染一些表头 如下所示 render createElement return createElement div class header Array apply null length this initHou