无法在 OM 中显示两个组件

IT技术 clojurescript reactjs om
2021-05-03 21:26:08

我正在尝试学习 Om,但遇到了一些我不明白的事情。我希望这个代码

(defn search-page-view [app owner]
(reify
    om/IRender
    (render [_]
      (dom/div #js {:id "search-block"}
                  "Test")
      (dom/div #js {:id "results-block"}
               "Test2"))))
(om/root
 search-page-view app-state
  {:target (. js/document (getElementById "app"))})

导致这个html:

<div id="app>
  <div id="search-block">
    Test
  </div>
  <div id="results-block">
    Test2
  </div>
</div>

然而,事实并非如此!第一个div包含 Test 不显示。我有什么误解?

使用解决方案进行编辑(由 FakeRainBrigand 指出):

将代码更改为

(defn search-page-view [app owner]
  (reify
    om/IRender
    (render [_]
      (dom/div nil
               (dom/div #js {:id "search-block"}
                    "Test")
               (dom/div #js {:id "results-block"}
                    "Test2")))))

结果是预期的 html。

1个回答

正如此处和 FakeRainBrigand 所解释的那样,您的渲染函数必须返回单个可渲染对象。