Удаление компонентов Reactjs Om (ClojureScript)

Я пытаюсь создать систему окон с вкладками на веб-странице, используя навигацию "таблетки" от om-bootstrap, добавляя вкладки при нажатии на ссылки и удаляя вкладки при нажатии кнопки X на вкладках.

Мне нужно знать, как добавлять и удалять данные из глобального состояния / хранилища и создавать макрос, который можно использовать для объявления компонента приложения с вкладками и его удаления, когда он больше не существует.

Как лучше всего ссылаться на глобальное состояние? Как я могу заставить компонент удалить / размонтировать себя, когда он закрывается?

1 ответ

Решение

Поскольку удаление подкомпонента влияет на его владельца, вы должны сообщить владельцу (то есть "системе вкладок"), что эта вкладка должна быть закрыта / уничтожена / уничтожена.

Я копался todomvc примерреальном времени), предполагая, что ваш процесс уничтожения панелей вкладок во многом аналогичен уничтожению там предметов TODO. Я не вижу ничего противостоящего до сих пор. Вот мои выводы:

  1. Канал используется... Когда приложение запускается (IWillMount), (chan) (от core.async) записывается в состояние приложения на :comm ключ.
  2. ... для обработки событий... События из канала обрабатываются в цикле, следующем за этим кодом, в go -информ, асинхронно с блоком, в котором он появляется (с <! будучи "своего рода блокирующей" операцией). Ну, вы можете знать это, я не знал, все еще изучая, что такое CLJS.
  3. ... которое передается в начальные состояния всех дочерних элементов.... Таким образом, дети получают возможность отправлять события в корень. Мне это начинает нравиться
  4. ... чтобы они могли отправлять события своим родителям! Это сделано в put! звонки с comm канал, выбранный в связанной строке. Помещенные события обрабатываются циклом, определенным в (2), который делегирует их соответствующим функциям в зависимости от type (сопровождающее ключевое слово).

Я далеко не профессионал ClojureScript, но я учусь. Так что, если вышеупомянутое не имеет смысла, это нормально и означает, что я чего-то не понял. Если это окажется так, я бы очень хотел вернуть меня в нужное русло.

Другие вопросы по тегам