Comments 11
А как в таком случае быть с, например, Google Tag Manager? Он конечно многое умеет, но проще работать с ним зная конкретный id элемента, для которого надо снять аналитику (клики хотя бы).
У вас там или хитрый код или в первом “case” пропущен “break”, что приводит к безусловному выполнению второго “case”.
Это интересный эксперимент, но, кмк, для простого лендинга (или другого контента со статической разметкой). Работа построенная на мутациях DOM напрямую в растущем проекте ведёт к росту императивного кода и снижению уровня абстракции и его рассеиванию (а должно быть наоборот). Да, здесь работа сводится к работе с данными - это хорошо, но я подозреваю, отказавшись от React (как заявлено в заголовке), Вы должны будете прийти к его альтернативе как минимум т.к. обновление данных - это ещё не всё, также нужна возможность описывать поведение аппки, чтоб оставаться на высоком уровне абстракции.
Полностью с Вами согласен, и не в коем случае не призываю отказываться от React. Я лишь хотел показать, что у "реактивности" всё же есть альтернатива.
И в каком месте тут реактивность? Обычный прямой вызов функции. Вы лучше покажите как при клике кнопки в табе уходит запрос, его ответ корректно обрабатывается и потом отображается в виде датасета или таблицы, которая умеет работать с этим же запросом - сортировка/фильтрация, и вот тогда поговорим о реактивности)
Ну зачем же так усложнять то. Простой клик и датасет с таблицами. Неужели прямого вызова функции недостаточно для реактивности?
Кстати, да. Под реактивностью обычно хочется видеть как минимум Proxy-объект. Это несложно, но это должно быть абстрагировано от UI - отсюда следует, что это не проблема управления вкладками или прочим UI, а скорее, подписка на изменение состояния (и должно быть описано отдельно)
Накидал свой пример https://habr.com/ru/articles/983268/
Хочу внести ясность и развеять недопонимание. Многие могли подумать, что я против React. Уверяю Вас, я совершенно не против React. Продукты на React реально качественные, какие и нужны для бизнес-задач. И если Вы скажете, что моя идея не для "прода", то Вы совершенно правы, и я с Вами согласен. Но я, собственно, никогда не позиционировал и не ориентировал свою идею для продакшена, и вообще ни к чему не призывал. Я всего лишь описал возможность, что можно сделать вот так и это работает.
Как правильно выразился pravosleva – это эксперимент, просто интересный эксперимент.
По поводу "мутаций DOM". Если Вас пугает это словосочетание, то можно, к примеру, сделать и так
<div token-name="Menu" token-type="container" class="menu">
<button token-name="a[]" token-type="object" token-object="MenuBtn" value="0">Вкладка 1</button>
<button token-name="a[]" token-type="object" token-object="MenuBtn" value="1">Вкладка 2</button>
</div>Это позволит избавиться от цикла перебора атрибутов, и позволит использовать заглавные буквы как в именах токенов, так и в именах объектов/классов.
PS. Пожалуй, я ошибся с заголовком, уж слишком "кричащим" он получился.
Реактивность без React или как обойтись без id в html элементах