om / react:操纵渲染目标元素

时间:2016-02-11 16:20:37

标签: javascript reactjs clojurescript om

我正在使用om作为clojurescript反应界面。

一个问题,我猜这与om和反应有关:

在我的html体内,我有一个id为“app”的div,用于om / react作为渲染目标。

更改此元素之外的属性的首选方法是什么。更具体地说,我需要为身体设置一些样式表。

现在,更具体的clojure:

如何为javascript对象设置多个键值对。 (例如document.body.style)

我正在使用它:

(doseq [[k v] {"backgroundColor" "red" "overflow" "hidden" ...}]
   (aset js/document.body.style k v))

使用underscore.js有一个很好的方法:

_.extend(document.body.style, {"backgroundColor": "red" "overflow": "hidden"})

,但这是问题所在。也许这不是真的需要,因为有一个特殊的om / react方式去。

2 个答案:

答案 0 :(得分:3)

更好的方法是使用包含所有键值对的javascript对象设置正文样式:

(set! (.. js/document -body -style) #js {:backgroundColor "red" :overflow "hidden"})

答案 1 :(得分:0)

Naomi提供的解决方案很棒,但它使用了内联css的不良做法。我不是在代码中设置实际的css样式,而是将类设置为所需的html对象,并在样式表中定义该类的css属性。

例如:

(set! (.. js/document -body -className) "my-class")