TypeError: $$invalidate(..) 不是 Svelte 中的函数



我有一个显示评论的轮播。单击按钮时,出现此错误:

TypeError: $$invalidate(...) is not a function

奇怪的是,一切都正常,所以什么都没有坏。但是我无法理解此错误来自何处或导致此错误的原因。这是代码:

<script>
let showntestimonial = 1;
const testimonials = [ { // array of objects } ];
</script>
<section class="customer-testimonial">
<button
class="arrowbox"
on:click={() => (showntestimonial += 2)((showntestimonial = showntestimonial % 3))}>
<i class="far fa-chevron-left" />
</button>
<div class="textbox">
<p>
{@html testimonials[showntestimonial].text[$language]}
</p>
<h2>
{@html testimonials[showntestimonial].name}
</h2>
</div>
<button
class="arrowbox"
on:click={() => (showntestimonial++)((showntestimonial = showntestimonial % 3))}>
<i class="far fa-chevron-right" />
</button>
</section>

这不是 Svelte 错误,而是代码中的错误。当你写这篇文章时...

(showntestimonial++)((showntestimonial = showntestimonial % 3))

。你说的是'用(showntestimonial % 3)的论点打电话给showntestimonial++'。但showntestimonial++不是一个函数,它是一个数字——你不能调用它。

好的,我仍然不知道问题的确切来源,但我能够通过使用"正常"函数语法而不是那种花哨的语法来修复它。因此,修复错误的代码是这样的:

<button
class="arrowbox"
on:click={() => {
showntestimonial += 2;
showntestimonial = showntestimonial % 3;
}}>
<i class="far fa-chevron-left" />
</button>

相关内容

  • 没有找到相关文章

最新更新