首页 > 解决方案 > 推送到数组会导致无限循环

问题描述

这是一个解决此问题的 jsfiddle,但请小心,因为它包含无限循环并使浏览器选项卡滞后并在打开控制台时最终冻结:https ://jsfiddle.net/evx1j6yf/1/

数组:

days: [
  "monday",
  "tuesday",
  "wednesday",
  "thursday",
  "friday",
  "saturday"
],

openingDays: []

模板:

{% for day in days %}
    {[ formatDays(day) ]}
{% endfor %}

格式天数:

 formatDays(day) {
     message = translateDays(day);
     openingDays.push(message);
 }

我所期望的:我的第二个数组应该填充天数的副本。
我得到了什么:一个无休止的循环,在最后一天之后,它只会无限循环。

控制台日志:

["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", ...

标签: javascriptarraysvue.jsvuejs2

解决方案


我得到了什么:一个无休止的循环,在最后一天之后,它只会无限重复。

无论何时调用formatDays它都会导致重新渲染,因为模板中显示的数据正在更改。因为formatDays是一种方法,并且直接在模板中使用{{}},每次重新渲染时都会调用它。因此无限循环。

我所期望的:我的第二个数组应该填充天数的副本。

我已经更新了你的小提琴


推荐阅读