什么是 Om 组件?

What is an Om component?

考虑以下 om 代码片段:

(fn [data owner]
    (reify
      om/IRender
      (render [_]
        (dom/p nil (:text data)))))

问题: "Om component" 是整个片段,还是仅仅是 (reify ...) 表达式的函数 return 值?

通常,它们都被称为"component"。 reify的结果是"object-y"的东西,所以从某种意义上说应该叫组件,但是函数是被命名的东西,所以它通常是值得一提的。

但重要的是, 这些都不是 React 组件。 Om 为您创建和管理 React 组件。它在此处可用 owner.

Om Next 删除了这种间接级别,这有助于解决术语歧义:

(defui HelloWorld
  Object
  (render [this]
    (dom/div nil "Hello, world!")))

(def hello (om/factory HelloWorld))

在这个Om Next代码中,HelloWorld是一个实际的React组件class,它的实例(由函数hello生成)是实际的React组件对象。