如何解决$w.at 事件处理程序在转发器上触发时递归运行 WIX / Corvid / Velo
我有一个非常简单的导出函数示例(事件处理程序 mouseIn
),它对我来说有点奇怪。
我有一个装有 150 个元素的中继器。当我有 10 个元素时,一切都很好。但是元素越多,函数的运行速度就越慢。虽然问题不同。 Repeater elements
在编辑器中,#repeater
看起来像这样:有一个 container2
,其中包含所有元素,而 Box1
是默认折叠的。 Box1
包含 3 个 dropdowns
。这些元素未连接到任何数据集。我的意思是 container2
Box1
和 dropdowns
中的任何一个。
Repeater in Editor
以下是我网站上的功能:
export function container2_mouseIn(event) {
let $item = $w.at(event.context);
$item("#Box1").expand();
}
export function container2_mouSEOut(event) {
let $item = $w.at(event.context);
$item("#Box1").collapse();
}
export function Box1_mouseIn(event) {
let $item = $w.at(event.context);
$item("#Box1").expand();
}
所以,从上面的函数可以看出,我想用这段代码实现的是显示相关元素 dropdowns
的 #OnMouseIn
并隐藏 #OnMouSEOut
的 container2
}}。
如果中继器中有 3 到 10 件物品,这会很好而且很快。但是如果你有 20 f.e.您可以看到 dropdowns
出现的延迟。当我有 150 个项目时,工作速度非常慢,而且由于我不仅有这些事件处理程序,我什至在 Chrome 控制台中出现错误。
接下来做了什么: 我在 Chrome 中打开了一个性能选项卡并准确记录了悬停动作以查看它发生了什么。 这是result
因此鼠标移出事件花费了 813.6 毫秒。差不多一秒钟。是不是很奇怪? 这些超出/任务=>事件鼠标输出=>函数调用/的整个绿色列由三个重复
组成(匿名)
_t
r
一次又一次。我不知道它是什么样的 #recursion 以及它为什么会发生...
Recursion
即使我在网站上有 10 个元素,也会发生这种情况。只是如果我有 150 它可以看到更好。而且我开始出现错误 Uncaught RangeError: Maximum call stack size exceeded。 我对堆栈有一点了解,但我真的不知道这个 WIX 代码出了什么问题,为什么会这样?
有人知道我的代码有什么问题吗?为什么会发生这种递归?
我还录制了与非中继器元素相关的事件。我的意思是我的页面上只是一个单独的按钮。在这种情况下没有递归。只需在控制台中进行快速而简短的函数调用。
先谢谢你。感谢您对此提供的任何帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。