Эффективное обновление всего массива в VueJs - PullRequest
0 голосов
/ 04 августа 2020

Мне нужно обновить действительно длинный массив на основе входного значения поля выбора. Поскольку существуют проблемы мутации ссылочных типов, способ обнаружения изменений - это такие методы, как splice. Однако использование splice() не привело к очистке массива, я не знаю почему. Я наткнулся на Vue.set(data, index, value), который работает, и мое текущее решение таково:

  if (this.selectval === "fizz") {
    const newarr = [35, 8, 7, 6, 5, 4, 3, 2];
    for (let i = 0; i < newarr.length; i++) {
      Vue.set(this.$store.state.country, i, newarr[i]);
    }
  }

Однако в этом уже очень небольшом примере код кажется слишком сложным, чтобы просто изменить данные во всем массиве. Есть ли варианты, которые более лаконичны и близки к моему желаемому this.$store.state.country = newdata?

1 Ответ

2 голосов
/ 04 августа 2020

вы можете просто установить его как обычно, как вы хотите:

this.$store.state.country = newarr;

Vue .set необходим только для обновления элементов в массиве из-за того, как javascript обрабатывает ссылки на элементы массива. Вы всегда можете просто заменить все это целиком.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...