删除 Reactjs Om 组件 (ClojureScript)

Removing Reactjs Om components (ClojureScript)

我正在尝试使用 om-bootstrap 的 "pills" 导航在网页中创建一个选项卡式窗口系统,方法是在单击链接时添加选项卡并在选项卡上的 X 按钮时删除选项卡被点击。

我需要知道如何在全局 state/store 中添加和删除数据,并创建一个可用于声明选项卡应用程序组件并使其在不再存在时自行删除的宏。

引用全局状态的最佳方式是什么? 如何在组件关闭时让组件 remove/unmount 本身?

由于删除子组件会影响其所有者,您应该让所有者(即 "tab system")知道此选项卡需要 closed/destroyed/obliterated。

我已经仔细研究了 todomvc example (live),假设您销毁选项卡窗格的过程与销毁那里的 TODO 项目几乎相同。到目前为止,我没有看到任何冲突。这是我的发现:

  1. A channel is used...。当应用程序启动时(IWillMount),一个(chan)(来自core.async)被写入应用程序状态:comm键。
  2. ...for event handling...。来自通道的事件在该代码之后的循环中以 go 形式处理,与它出现在其中的块异步(<! 是 "kinda blocking" 操作)。 嗯,你可能知道,我不知道,还在学习什么是 CLJS。
  3. ...that is passed to all child items' init states...。所以它成为 children 向根发送事件的一种方式。 我开始喜欢这个了。
  4. ...so they can send events to their parent! 这是在使用 comm 通道的 put! 调用中完成的,在链接行中获取。放在那里的事件由 (2) 中定义的循环处理,该循环根据 type(伴随关键字)将它们委托给适当的函数。

我离 ClojureScript 专家还很远,但我正在学习。因此,如果以上内容没有意义,这很正常,表示我不明白某些事情。如果事实确实如此,我将不胜感激。