Dev-nik
@Dev-nik

Как в компоненте получить отсортированные данные из хранилища?

Как отсортировать по порядку входящие данные (числа), получаемые по из VUEX?

Сами данные:

filters =  {
    "age_ratings": [
      "16+",
      "18+",
      "0+",
      "12+"
    ],
    ...
}

Хранилище:

export const state = () => ({
  filters: []
})

export const mutations = {
  setFilters(state, filters) {
    state.filters = filters
  }
}

export const actions = {
  async filterFilms({ commit }) {
    const filters = await this.$axios.$get('apiUrl')
    commit('setFilters', filters)
  }
}

export const getters = {
  filters: st => st.filters
}

Компонент:

< v - select
  : items = "filters.age_ratings" //здесь вывожу нужные данные
  ></v - select >

    mounted() {
  this.$store.dispatch("films/filterFilms");
},
computed: {
  filters() {
    return this.$store.getters["films/filters"];
  }
}

Пробовал сделать так:

computed: {
  filters() {
    return this.$store.getters["films/filters"];
  },
  ageRatings() {
    let age = [];
    age.push(this.$store.getters["films/filters"].age_ratings);

    //нерабочий велосипед, пробовал отрезать плюс и отсортировать методом sort
    age.slice(0, -1).sort(function (a, b) {
      return a - b
    })

    return age
  }
}
  • Вопрос задан
  • 470 просмотров
Решения вопроса 1
Kozack
@Kozack Куратор тега Vue.js
Thinking about a11y
Создайте ещё один геттер во Vuex и используйте его в компонентах:
export const getters = {
  filters: st => st.filters,
  ageRatings: (state, getters) => getters.filters.age_ratings.sort((a,b) => parseInt(a) - parseInt(b))
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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