Наткнулся на эту тему. Да, жудко бесит это в LWC после ангуляра. Если в цикле, то я заранее (когда получаю массив данных например из апекса) прохожусь по массиву записей, создаю и считаю специальное булевое поле.
for (let item of this.items) {
item.isVisible_ = <some boolean expression>;
}
а в шаблоне просто проверяю это поле
<div if:true={item.isVisible_}>
...
</div>
Если условия меняются просто запускаю первый фрагмент еще раз на пересчет.
Создавать лишние компоненты жуть как не люблю. У меня все компоненты просто монструозны. Стараюсь делать все циклами. Компоненты только под большие логические блоки или если компонент будет использоваться в разных местах типа кастомный импут и прочее. Делать компоненты просто для цикла меня напрягает. Потом будет слишком много мусора в проекте.