我很难理解Om如何使用apply来渲染列表项,就像下面从Om教程页面中提取的示例一样。
(om/root
(fn [data owner]
(om/component
(apply dom/ul nil
(map (fn [text] (dom/li nil text)) (:list data)))))
app-state
{:target (. js/document (getElementById "app0"))})
我的理解是,apply函数接受一个函数和一个列表,并将该函数应用于列表。但在这个例子中,这种理解将转化为将dom/ul
应用于nil
。
我不明白的是:
- 为什么要将
dom/ul
应用于列表?我不想创建ul
元素,我想创建li
元素。 - 在这个例子中,apply如何处理所有发送的参数?