Как правильно обновить объект в массиве? - PullRequest
2 голосов
/ 29 февраля 2020

У меня есть массив объектов, в моем коде я перечисляю эти

{#each advances as tech}
    <Advance tech={tech} addToCart={addToCart}/>
{/each}

Функция добавления в корзину обновляет переменную объекта:

  const addToCart = (tech) =>  {
      tech.Cart = true;
  }

Это не вызвать реактивность, как мне это сделать?

Ответы [ 2 ]

5 голосов
/ 01 марта 2020

Один из способов сделать это - обратиться к элементу в списке, используя его индекс

{#each advances as tech, index}
    <Advance tech={tech} on:click={() => advances[index].cart = true}/>
{/each}

пример: https://svelte.dev/repl/70d4235faefd4f1b87ad6d359d02f05b?version=3

3 голосов
/ 02 марта 2020

Предполагая, что вы хотите сделать больше, чем просто переключение флага, вы также можете сделать:

const addToCart = (tech) =>  {
  tech.Cart = true;
  advances = advances;
}

Это заставит вызвать триггер реактивности в массиве.

...