Skip to content

Commit 9bb0d98

Browse files
committed
updateStyle: use setProperty() only when key includes "-"
This will improve the performance of “mutate styles/properties” and reduce the amount of code a little.
1 parent 50c580b commit 9bb0d98

File tree

2 files changed

+8
-17
lines changed

2 files changed

+8
-17
lines changed

render/render.js

+8-10
Original file line numberDiff line numberDiff line change
@@ -778,13 +778,6 @@ module.exports = function() {
778778
}
779779

780780
//style
781-
var uppercaseRegex = /[A-Z]/g
782-
function toLowerCase(capital) { return "-" + capital.toLowerCase() }
783-
function normalizeKey(key) {
784-
return key[0] === "-" && key[1] === "-" ? key :
785-
key === "cssFloat" ? "float" :
786-
key.replace(uppercaseRegex, toLowerCase)
787-
}
788781
function updateStyle(element, old, style) {
789782
if (old === style) {
790783
// Styles are equivalent, do nothing.
@@ -800,21 +793,26 @@ module.exports = function() {
800793
// Add new style properties
801794
for (var key in style) {
802795
var value = style[key]
803-
if (value != null) element.style.setProperty(normalizeKey(key), String(value))
796+
if (value != null) {
797+
if (key.indexOf("-") > -1) element.style.setProperty(key, String(value))
798+
else element.style[key] = String(value)
799+
}
804800
}
805801
} else {
806802
// Both old & new are (different) objects.
807803
// Update style properties that have changed
808804
for (var key in style) {
809805
var value = style[key]
810806
if (value != null && (value = String(value)) !== String(old[key])) {
811-
element.style.setProperty(normalizeKey(key), value)
807+
if (key.indexOf("-") > -1) element.style.setProperty(key, value)
808+
else element.style[key] = value
812809
}
813810
}
814811
// Remove style properties that no longer exist
815812
for (var key in old) {
816813
if (old[key] != null && style[key] == null) {
817-
element.style.removeProperty(normalizeKey(key))
814+
if (key.indexOf("-") > -1) element.style.removeProperty(key)
815+
else element.style[key] = ""
818816
}
819817
}
820818
}

render/tests/test-createElement.js

-7
Original file line numberDiff line numberDiff line change
@@ -46,13 +46,6 @@ o.spec("createElement", function() {
4646

4747
o(vnode.dom.style["--cssVar"]).equals("red")
4848
})
49-
o("censors cssFloat to float", function() {
50-
var vnode = m("a", {style: {cssFloat: "left"}})
51-
52-
render(root, vnode)
53-
54-
o(vnode.dom.style.float).equals("left")
55-
})
5649
o("creates children", function() {
5750
var vnode = m("div", m("a"), m("b"))
5851
render(root, vnode)

0 commit comments

Comments
 (0)