Ошибка типа: $$ invalidate (...) не является функцией в Svelte - PullRequest
1 голос
/ 30 января 2020

У меня есть карусель, которая отображает отзывы. При нажатии на кнопку я получаю эту ошибку:

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>

Ответы [ 2 ]

1 голос
/ 30 января 2020

Это не ошибка Svelte, это ошибка в вашем коде. Когда вы пишете это ...

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

... вы говорите: 'call showntestimonial++ с аргументом (showntestimonial % 3)'. Но showntestimonial++ это не функция, это число - его нельзя назвать.

0 голосов
/ 30 января 2020

Хорошо, я до сих пор не знаю точного источника проблемы, но я смог исправить ее, используя вместо этого причудливый синтаксис функции. Итак, код, который исправляет ошибку:

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