@lookingfor2

Почему не происходит перендеринг?

data() {
    return {
      templatesList: this.$store.getters.templatesList,
    };
  },

sortByData() {
      const arr = this.$store.getters.templatesList;
      const n = arr.length;
      for (let i = 0; i < n - 1; i++) {
        for (let j = 0; j < n - 1 - i; j++) {
          if (arr[j + 1].created_at < arr[j].created_at) {
            const t = arr[j + 1];
            arr[j + 1] = arr[j];
            arr[j] = t;
          }
        }
      }
      console.log(arr);
      this.templatesList = arr;
      return true;
    },

Список элементов лежит в templatesList, вывожу его на странице
На клик вызываю метод sortByData, в консоли вижу, что массив с данными меняется, но на странице все остается прежним, хотя указываю this.templatesList = arr;
vuedevtools показывает что events нет
  • Вопрос задан
  • 55 просмотров
Решения вопроса 1
Aetae
@Aetae Куратор тега Vue.js
Тлен
Включи предупреждения в консоли. Ты пытаешься изменять массив напрямую в store, чего делать нельзя.
const arr = this.$store.getters.templatesList.slice(0);

Ну и для сортировки есть встроенный метод sort:
arr.sort(({created_at:a}, {created_at:b}) => a < b ? -1 : a > b ? 1 : 0);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы