使用 ClojureScript+Sablono 渲染未净化 HTML

Render unstanitized HTML with ClojureScript+Sablono

我有一个保存在全局原子中的数据集(根据 ClojureScript SPA 中的典型设计模式),我知道数据是安全的(我手动输入它 - 它只是我的引号列表' m 每个页面加载随机呈现一个)。

但是,引号包含 <i> 等基本 HTML 标签和 &mdash 等字符。我正在使用 sablono 来呈现 HTML 中的数据,如下所示:

(defcomponentk quote
  [[:data quotes]]
  (render [_]
      (let [quote (rand-nth quotes)]
        (html
         [:section
          [:blockquote {:id "quote"}
           [:header (om/build citation quote)]
           (map #(vector :p %) (:quote quote))]]))))

(:quote quote) 是一个字符串向量,每个字符串都是引文的一段(因此我将 :p 标记映射到它上面)。

如何告诉 Sablono 将字符串呈现为 HTML 而不是原始文本?

我唯一能想到的就是在每个字符串上映射 sablono.core/html,但我无法让它工作。

React 提供 dangerouslySetInnerHTML 作为其组件的选项。如果您将 Sablono 与 Om 一起使用,您可以这样做:

(om.dom/div #js {:dangerouslySetInnerHTML #js {:__html "<b>Bold!</b>"}})

更多信息在这里:

https://groups.google.com/forum/#!topic/clojurescript/DXzHx3vkszo https://github.com/r0man/sablono/issues/36