Задать вопрос
@mazahaler

Как отрефакторить computed методы во Vue?

Здравствуйте, как можно вот такое "отрефакторить"?
computed: {
            strengthHeroes() {
                return this.heroes.filter(hero => {
                    return hero.hero_attribute === 'Сила' && hero.name.toLowerCase().includes(this.searchHeroesString.toLowerCase())
                })
            },
            agilityHeroes() {
                return this.heroes.filter(hero => {
                    return hero.hero_attribute === 'Ловкость' && hero.name.toLowerCase().includes(this.searchHeroesString.toLowerCase())
                })
            },
            intelligenceHeroes() {
                return this.heroes.filter(hero => {
                    return hero.hero_attribute === 'Интеллект' && hero.name.toLowerCase().includes(this.searchHeroesString.toLowerCase())
                })
            },
        },

Было бы здорово, если бы можно было передавать параметры в computed свойства, тогда из этого всего получился бы 1 метод. И вот смотрю на это, а в голове начинается "ты повторяешь один и тот же код, ты повторяешь один и тот же код..."
Можно этот код как-то сократить, при этом методы оставив в computed?
  • Вопрос задан
  • 73 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
0xD34F
@0xD34F Куратор тега Vue.js
передавать параметры <...> оставив в computed

А смысл? Будет computed свойство, значение которого является функцией. Никакого кеширования, только усложнение кода. Делайте обычный метод:

methods: {
  filterHeroes(attr) {
    const s = this.searchHeroesString.toLowerCase();
    return this.heroes.filter(n => n.hero_attribute === attr && n.name.toLowerCase().includes(s));
  },
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@mazahaler Автор вопроса
Просто сделал обычный метод вместо этого всего. На душе стало легче.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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