Как пронумеровать ключи «реактивного» в Vue. js Composition API? - PullRequest
0 голосов
/ 09 июля 2020

Я объявляю состояние следующим образом:

const symbols = reactive( new Map() );

Ключи - это динамические c (это тень таблицы базы данных), добавленные symbols.set(id, {...}) и удаленные symbols.delete(id).

Как мне перебрать ключи и значения reactive? Пробовали это, и я всегда получаю пустой итератор:

    const symbolsByLayer = computed(() => {
      console.debug("New stuff!", symbols);   // This shows '[[Target]]' with two entries

      console.debug( Array.from(symbols.entries()) );   // Array(0)
      console.debug( Array.from(symbols.keys()) );   // Array(0)
      console.debug(Object.entries(symbols));   // Array(0)

Я не нашел do c, в котором упоминалось бы использование reactive с ключами Dynami c, но я предполагаю, что это должно быть возможным.

1 Ответ

0 голосов
/ 10 июля 2020

Должен работать с этим:

const symbolsSortedByLayer = computed(() => {   // () => [ {...symbolsD, _id: index } ]   // sorted by layer

  const arr = Array.from(symbols.entries(), ([id,o]) => ({ ...o, _id: id }) );    // add '_id' to all entries
  const arr2 = arr.sort( (a,b) => a.layer ?? Number.NEGATIVE_INFINITY - b.layer ?? Number.NEGATIVE_INFINITY );

  console.log("Array of symbols (sorted): ", arr2);
  return arr2;
});

Все еще не понимаю, почему код в вопросе давал пустые массивы. Уезжаем отсюда, на случай, если кто-то на это укажет.

...