Удаление компонентов Reactjs Om (ClojureScript)
Я пытаюсь создать систему окон с вкладками на веб-странице, используя навигацию "таблетки" от om-bootstrap, добавляя вкладки при нажатии на ссылки и удаляя вкладки при нажатии кнопки X на вкладках.
Мне нужно знать, как добавлять и удалять данные из глобального состояния / хранилища и создавать макрос, который можно использовать для объявления компонента приложения с вкладками и его удаления, когда он больше не существует.
Как лучше всего ссылаться на глобальное состояние? Как я могу заставить компонент удалить / размонтировать себя, когда он закрывается?
1 ответ
Поскольку удаление подкомпонента влияет на его владельца, вы должны сообщить владельцу (то есть "системе вкладок"), что эта вкладка должна быть закрыта / уничтожена / уничтожена.
Я копался todomvc
пример (в реальном времени), предполагая, что ваш процесс уничтожения панелей вкладок во многом аналогичен уничтожению там предметов TODO. Я не вижу ничего противостоящего до сих пор. Вот мои выводы:
- Канал используется... Когда приложение запускается (
IWillMount
),(chan)
(отcore.async
) записывается в состояние приложения на:comm
ключ. - ... для обработки событий... События из канала обрабатываются в цикле, следующем за этим кодом, в
go
-информ, асинхронно с блоком, в котором он появляется (с<!
будучи "своего рода блокирующей" операцией). Ну, вы можете знать это, я не знал, все еще изучая, что такое CLJS. - ... которое передается в начальные состояния всех дочерних элементов.... Таким образом, дети получают возможность отправлять события в корень. Мне это начинает нравиться
- ... чтобы они могли отправлять события своим родителям! Это сделано в
put!
звонки сcomm
канал, выбранный в связанной строке. Помещенные события обрабатываются циклом, определенным в (2), который делегирует их соответствующим функциям в зависимости отtype
(сопровождающее ключевое слово).
Я далеко не профессионал ClojureScript, но я учусь. Так что, если вышеупомянутое не имеет смысла, это нормально и означает, что я чего-то не понял. Если это окажется так, я бы очень хотел вернуть меня в нужное русло.