Skip to content

Commit f727da6

Browse files
committed
fix string style
1 parent c795e56 commit f727da6

File tree

3 files changed

+29
-20
lines changed

3 files changed

+29
-20
lines changed

Diff for: demo/index.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
<body>
1212
<div id="root"></div>
13-
<script src="./src/benchmark.tsx"></script>
13+
<script src="./src/use-state.tsx"></script>
1414
</body>
1515

1616
</html>

Diff for: demo/src/use-state.tsx

+12-7
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,21 @@
1-
import { h, render, useEffect, useState } from '../../src/index'
1+
import { h, render, useEffect, useState } from "../../src/index"
22

33
function App() {
44
const [count, setCount] = useState(0)
55
const [two, setTwo] = useState(0)
6-
console.log(count,two)
6+
console.log(count, two)
77
return (
88
<div>
9-
<button onClick={() => setCount((c)=>{
10-
console.log(c)
11-
return c+1
12-
})}>{count}</button>
13-
<button onClick={() => setTwo(two + 1)}>{two}</button>
9+
<button
10+
onClick={() =>
11+
setCount((c) => {
12+
return c + 1
13+
})
14+
}
15+
>
16+
{count}
17+
</button>
18+
<button onClick={() => setTwo(two + 1)} style="color:#2ef">{two}</button>
1419
</div>
1520
)
1621
}

Diff for: src/dom.ts

+16-12
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import { Attributes, DOM, IFiber } from './type'
2-
import {LANE} from './reconciler'
1+
import { Attributes, DOM, IFiber } from "./type"
2+
import { isStr, LANE } from "./reconciler"
33

44
export const updateElement = <P extends Attributes>(
55
dom: DOM,
@@ -10,19 +10,23 @@ export const updateElement = <P extends Attributes>(
1010
let oldValue = oldProps[name]
1111
let newValue = newProps[name]
1212

13-
if (oldValue === newValue || name === 'children') {
14-
} else if (name === 'style') {
15-
for (const k in { ...oldValue, ...newValue }) {
16-
if (!(oldValue && newValue && oldValue[k] === newValue[k])) {
17-
;(dom as any)[name][k] = newValue?.[k] || ''
13+
if (oldValue === newValue || name === "children") {
14+
} else if (name === "style") {
15+
if (isStr(newValue)) {
16+
dom.setAttribute(name, newValue)
17+
} else {
18+
for (const k in { ...oldValue, ...newValue }) {
19+
if (!(oldValue && newValue && oldValue[k] === newValue[k])) {
20+
;(dom as any)[name][k] = newValue?.[k] || ""
21+
}
1822
}
1923
}
20-
} else if (name[0] === 'o' && name[1] === 'n') {
24+
} else if (name[0] === "o" && name[1] === "n") {
2125
name = name.slice(2).toLowerCase() as Extract<keyof P, string>
2226
if (oldValue) dom.removeEventListener(name, oldValue)
2327
dom.addEventListener(name, newValue)
2428
} else if (name in dom && !(dom instanceof SVGElement)) {
25-
;(dom as any)[name] = newValue || ''
29+
;(dom as any)[name] = newValue || ""
2630
} else if (newValue == null || newValue === false) {
2731
dom.removeAttribute(name)
2832
} else {
@@ -33,11 +37,11 @@ export const updateElement = <P extends Attributes>(
3337

3438
export const createElement = <P = Attributes>(fiber: IFiber) => {
3539
const dom =
36-
fiber.type === 'text'
37-
? document.createTextNode('')
40+
fiber.type === "text"
41+
? document.createTextNode("")
3842
: fiber.lane & LANE.SVG
3943
? document.createElementNS(
40-
'http://www.w3.org/2000/svg',
44+
"http://www.w3.org/2000/svg",
4145
fiber.type as string
4246
)
4347
: document.createElement(fiber.type as string)

0 commit comments

Comments
 (0)