【发布时间】:2016-10-21 22:45:10
【问题描述】:
正如我刚刚开始完全理解的那样,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。
然而,我们经常将简单的“无状态”组件表示为接受 props 并返回 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 中,而不是稍后被 React reconciler 替换。
在 Om 中有 React.createElement 的首选方式吗?还是更喜欢直接调用这样的函数,即使它跳过在渲染树中创建组件实例?
【问题讨论】: