正如我刚开始完全明白的那样,om.core/build
和om.next
的工厂函数返回引用组件函数/类的React元素对象,并返回the actual component is only instantiated later by React's reconciler。即,(om.core/build some-component data)
实际上不会立即拨打some-component
。应该直接调用Om中的“组件”函数吗?
但是,我们经常将简单的“无状态”组件表示为仅使用道具并返回React元素的函数。在(纯粹的)React世界中,您可以使用其中一个功能,如组件类,如React.createElement(AStatelessComponent, {some: "props"})
,或者更方便地在JSX中使用<AStatelessComponent some="props" />
。那些也会返回一个引用AStatelessComponent
的React元素,直到后期才会实际调用它。但是在Om中,当我们有一个这样的简单组件(并且“我们”指的是我和我的团队,至少),我们直接调用这个函数。因此,
(render [this]
(om/div {}
(a-stateless-component {:some "data"})))
这里,a-stateless-component
是立即调用,而不管它返回被直接插入在div,而不是由阵营调解器以后被取代。
在Om中是否有首选React.createElement
的方法?或者是否更喜欢直接调用这样的函数,即使它跳过在渲染树中创建组件实例?