@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?
  • Вопрос задан
  • 72 просмотра
Решения вопроса 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 Автор вопроса
Просто сделал обычный метод вместо этого всего. На душе стало легче.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы