使用 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
我有一个保存在全局原子中的数据集(根据 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