Skip to content

Commit d75b83f

Browse files
committed
perf: avoid using dataset entirely
1 parent 2191dda commit d75b83f

File tree

2 files changed

+9
-13
lines changed

2 files changed

+9
-13
lines changed

src/index.ts

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,18 @@ export const BindOnceDirective: Directive = {
55
created(el, binding) {
66
for (const key in binding.value) {
77
const k = kebabCase(key)
8-
el.setAttribute(k, el.dataset[k] || binding.value[key])
8+
el.setAttribute(k, el.getAttribute(k) || binding.value[key])
99
}
1010
},
1111
getSSRProps(binding) {
12-
if (!binding.value) {
13-
return {}
14-
}
12+
/* c8 ignore next */
13+
if (!binding.value) return {}
1514

1615
return Object.fromEntries(
17-
Object.entries(binding.value).flatMap(([key, value]) => {
18-
const k = kebabCase(key)
19-
return [
20-
[k, value],
21-
[`data-${k}`, value],
22-
]
23-
})
16+
Object.entries(binding.value).map(([key, value]) => [
17+
kebabCase(key),
18+
value,
19+
])
2420
)
2521
},
2622
}

test/index.spec.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,12 +58,12 @@ describe('directive', () => {
5858
app.directive('bind-once', BindOnceDirective)
5959
const result = await renderToString(app)
6060
expect(result).toBe(
61-
`<div id="test-value" data-id="test-value" num="42" data-num="42" bool="true" data-bool="true" camel-case="camel" data-camel-case="camel"></div>`
61+
`<div id="test-value" num="42" bool="true" camel-case="camel"></div>`
6262
)
6363
})
6464

6565
it('hydrates server-rendered data properly', async () => {
66-
const body = `<body id="app"><div id="test-value" data-id="test-value" num="42" data-num="42" bool="true" data-bool="true" camel-case="camel" data-camel-case="camel"></div></body>`
66+
const body = `<body id="app"><div id="test-value" num="42" bool="true" camel-case="camel"></div></body>`
6767
const html = `<html>${body}</html>`
6868
document.write(html)
6969
const app = createSSRApp({

0 commit comments

Comments
 (0)