SH8DER
@SH8DER
Начинающий Web-разработчик

Стоит ли проверять содержимое VUE $slots в computed?

Computed кэшируется, а проверка наличия каких-то компонентов в определённых $slots на сколько я понимаю ресурсоёмкая.

Сейчас у меня есть computed свойство classList для которое возвращает объект со списком классов, и прям в нём у меня есть проверка на наличие компонентов переданных в слот:

Объект классов
return {
        button: true,
        "button--outline": this.color === "outline",
        "button--primary": this.color === "primary",
        "button--primary-glass": this.color === "primary-glass",
        "button--red": this.color === "red",
        "button--red-glass": this.color === "red-glass",
        "button--yellow": this.color === "yellow",
        "button--yellow-glass": this.color === "yellow-glass",
        "button--green": this.color === "green",
        "button--green-glass": this.color === "green-glass",
        "button--light": this.color === "light",
        "button--disabled": this.disabled,
        "button--full": this.full,
        "button--square": this.square || this.contentOnlyIcon(),
        "button--contains-link": this.link,
        "button--contains-icon": this.contentContainsIcon()
      };
Функции
contentContainsIcon() {
      let status = false;
      this.$slots.default.forEach(VNode => {
        if (
          typeof VNode.componentOptions !== "undefined" &&
          VNode.componentOptions.tag === "AppIcon"
        )
          status = true;
      });
      return status;
    },
    contentOnlyIcon() {
      const content = this.$slots.default;
      if (
        content.length === 1 &&
        typeof content[0].componentOptions !== "undefined" &&
        content[0].componentOptions.tag === "AppIcon"
      )
        return true;
      return false;
    }


Проблема:
Как видно по коду если кнопка содержит только иконку -- то к ней применяется класс который делает её квадратной, но если перезагружать страницу, то класс то применяется то нет, при том что никакие данные нигде не меняются.
Я предполагаю что это связано с кэшированием computed метода?
  • Вопрос задан
  • 414 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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