Войти с помощью github
Форум /

Т.к. все модификаторы блока образуют одну сущность, а выбор метода зависит от текущего модификатора, то можно писать вот такие кейсы.

const CartItem = bem.declBlock('CartItem', {
    delete() {
        console.log('Soft Delete')
    }
});

CartItem.declMod({ modName : 'obsolete' }, {
    delete() {
        console.log('Full Delete');
    }
});

cartItem = new CartItem();
cartItem.delete(); 

cartItem.setMod('obsolete');
cartItem.delete();

Результат в консоли

→ Soft Delete
→ Full Delete

Но возникает вопрос... На сколько архитектурно корректно использовать эти фичи? И использует ли кто-то их вообще?

Вроде удобно в runtime менять поведение блока в зависимости от модификатора, но с другой стороны не так явно выглядит.

@veged @tadatuta подскажите на сколько корректно использовать такой подход?