классов. Параметр size имеет 3 допустимых значения без любых иных.
size === ' ' ? Истина : size === ' ' ? Истина : иначе
в компьютед вынеси логику, и ставь класс через него
Ту да и тернарку)
Да, точно. Спасибо. Чет протупил, изи же.
Компьютед не нужен, вынесите в опшины объект classBySize: { small: 'toggle-small', md: 'toggle-md', ... } В компоненте вот так :class="$options.classBySize[size] || ''" Имхо значительно лучше чем три странных равенства
а зачем пихать объект с классами в опции, если для этого есть computed?
Там нету реактивности, это константа
и зачем здесь отсутствие реактивности, если она тут нужна?
Если мы говорим об объекте с опциями, там нету никакой реактивности Если использовать так, как я там описал, реактивность будет Можно и компьютед заюзать, но так будет больше кода, тут на вкус и цвет
Computed не принимает параметры, в этом случае лучше использовать метод который будет принимать параметр size и возвращать название класса
смена класса на основе реактивных данных - это как раз то, с чем прекрасно справляется computed таких объектов может быть не 1, а, например, 3, и хранить их в $options довольно странно, на мой взгляд
computed classes, который возвращает массив классов в виде строк если передано this.size, тогда в массив добавляется строка 'toggle-${this.size}' далее просто в шаблоне :class="classes"
Покажите мне где в объекте с классами реактивность Например вот в этом classBySize: { small: 'toggle-small', md: 'toggle-md' }
Хорошо, вот разница, сразу опишу Нереактивно, должно быть в $options ``` classBySize: { small: 'toggle-small', md: 'toggle-md' } Реактивно, нужно выносить в компьютед по-хорошему, но точно не в $options classBySize: { small: this.dynamicCLass1, md: this.dynamicCLass2 } ```
ну так computed нужно и писать иначе, ты хранишь просто маппер значений на классы, ничто не мешает тебе написать computed с учетом реактивного значения return { ‘toggle-small’: this.size === ‘small’, ‘toggle-md’: this.size === ‘md’, }; можно хоть через one-line if, хоть через switch это написать, на что фантазии хватит
Чем ваш подход лучше маппинга?
Не совсем подойдет, там size - строка, нескольких классов сразу не сможет быть
- тем, что это не переизобретенный велосипед и общепринятая работа с классами - тем, что computed кэшируется на основе зависимостей - тем, что не засоряются корневые свойства объекта, они не предназначены для хранения рандомных объектов, которых может быть много
Третий пункт - вы абсолютно не правы :)
Это как раз то место, куда можно и нужно складывать статику/константы
size не может быть сразу medium и small, поэтому класс в данном случае будет всегда один
computed среагирует только один раз, на одно значение size, о каком множестве вы говорите?
в чем цель переизобретения велосипеда, какой профит это дает? представь, что у тебя таких 5 объектов, ты их все будешь складывать в корневой объект? я уже не говорю о том, что условия отображения классов могут быть несколько сложнее или на основе других зависимостей
Обсуждают сегодня