我试图掌握两个 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
它来访问它。
但是,对于应用程序状态,它看起来与我不同。您始终可以在所有函数中使用应用程序状态光标,因为它是函数的顶级参数,即使您在回调中需要它,您也可以将其传递。大多数示例/教程都使用了,get-state
但我找不到get-props
. get-props 是多余的吗?我会在哪里使用它?
还有一件事与这个结构有关。在 React 中,我们有 props 和 state,但在 OM 中,我们有 app-state 和 state(内部状态),这让我在学习 OM 时感到困惑。Props 在 React 中从父级传递给子级,同样在 OM 中,我们将应用状态(游标)传递给子级。以下意见是否有效?
- app-state 是 React 的 props 的 OM 等价物
- props 是 React 只是数据,而 OM 中的 app-state 是包裹在游标中的数据
- 这意味着 OM 没有道具,只有应用状态游标,因此该函数
get-props
真正意味着get-app-state