Скрытие элемента в Clojurescript Dommy
-
23-12-2019 - |
Вопрос
Я пытаюсь скрыть элемент в ClojureScript, более конкретно Домми библиотека.Это то, что у меня пока получилось:
ClojureScript:
(ns fucking_about
(:require
[dommy.utils :as utils]
[dommy.core :as dommy])
(:use-macros
[dommy.macros :only [node sel sel1]]))
(map dommy/toggle! (sel :.hide))
HTML:
<html>
<head><title></title></head>
<body>
<ul>
<li class="show">Derp</li>
<li class="hide">Herp</li>
<li class="show">ies!</li>
</ul>
<script type="text/javascript" src="script.js"></script>
</body>
</html>
Но я не получаю никаких результатов при открытии сайта в браузере, и я понятия не имею, почему :< и я не могу найти никакой документации по ClojureScript за пределами страницы Github.
Решение
Дело в том, что map
возвращает отложенную последовательность элементов.Ленивая последовательность - это своего рода нереализованное обещание того, что вы можете получить.Вы хотите, чтобы ваша последовательность вызывала какие-то побочные эффекты.Чтобы это сработало, вам просто нужно это осознать.
Проблема тривиальна.У вас есть два варианта:
1) Реализуйте свою ленивую последовательность, используя doall
функция, подобная этой:
(doall (map dommy/toggle! (sel :.hide)))
Именно это и является целью doall
:пройдитесь по всей последовательности и примените все возможные эффекты.
2) Использование doseq
который предназначен для создания побочного эффекта, подобного этому:
(doseq [el (sel :.hide)]
(dommy/toggle! el))
И это все!В обоих случаях вы должны получить одинаковый результат.
Еще есть вопросы?