我试图掌握两个OM函数get-state和get-props的目的。看看下面的例子:
(defn example [app owner]
(reify
om/IInitState
(render-state [this state]
(println "app-state: " app )
(println "state: " state )
(println "get-props: " (om/get-props owner) )
(println "get-state: " (om/get-state owner) )
(dom/div nil "hello"))))
您会注意到app
和state
完全包含get-props
和get-state
返回的内容,乍一看似乎非常多余。
现在,并非所有生命周期函数(例如IWillMount
)都传递state
参数,因此当您在这种情况下需要它时,很明显您需要调用om/get-state
来获取访问它。
然而,对于应用程序状态,它看起来与我不同。你总是在所有函数中都有app-state游标,因为它是函数的顶级参数,即使你在回调中需要它,你也可以传递它。大多数示例/教程都使用get-state
,但我找不到get-props
的示例。 get-props是多余的吗?我会在哪里使用它?
还有一件事与这个结构有关。在React中我们有道具和状态,但在OM中我们有app-state和state(内部状态),这在学习OM时会让我困惑。 Props在React中从父节点传递给子节点,同样在OM中我们将app-state(游标)传递给子节点。以下观察结果是否有效?
get-props
实际上意味着get-app-state
答案 0 :(得分:2)
根据文档,get-props
阶段大多数(或专门)需要IWillReceiveProps
。will-receive-props
。 next-props
获取get-props
参数,其中包含未来的app-state / props。 IWillReceiveProps
为您提供当前的app-state / props,以便您可以比较两者。
来自om.core/get-props
的{{1}}:
在您的实施中,如果您希望检测道具过渡 必须使用
get-props
来获取以前的道具。这是 因为你的组件构造函数被调用了 更新的道具。
所以剩下的时间{{1}}是不必要的,因为如问题所述,您可以访问光标。