Skip to content

Commit ef88877

Browse files
yume-chanbirkskyum
authored andcommitted
Fix removing one <title> renders all previous <title>s
1 parent 72c603c commit ef88877

File tree

2 files changed

+31
-1
lines changed

2 files changed

+31
-1
lines changed

src/index.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@ function initClientProvider() {
155155
for (let i = index - 1; i >= 0; i--) {
156156
if (t[i] != null) {
157157
document.head.appendChild(t[i].ref);
158+
break;
158159
}
159160
}
160161
}

test/index.spec.tsx

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,35 @@ test("unmount middle child, should show only the last title", () => {
8989
dispose();
9090
});
9191

92+
test("unmount last child, should show only the second last title", () => {
93+
let div = document.createElement("div");
94+
const snapshot1 = "<title>Title 3</title>";
95+
const snapshot2 = "<title>Title 2</title>";
96+
const [visible, setVisible] = createSignal(true);
97+
const dispose = render(
98+
() => (
99+
<MetaProvider>
100+
<div>
101+
<Title>Title 1</Title>
102+
</div>
103+
<div>
104+
<Title>Title 2</Title>
105+
</div>
106+
<Show when={visible()}>
107+
<div>
108+
<Title>Title 3</Title>
109+
</div>
110+
</Show>
111+
</MetaProvider>
112+
),
113+
div
114+
);
115+
expect(document.head.innerHTML).toBe(snapshot1);
116+
setVisible(false);
117+
expect(document.head.innerHTML).toBe(snapshot2);
118+
dispose();
119+
});
120+
92121
test("hydrates only the last title", () => {
93122
hydrationScript();
94123
let div = document.createElement("div");
@@ -361,4 +390,4 @@ test("Escaping the title meta", () => {
361390
);
362391
expect(document.head.innerHTML).toBe(snapshot);
363392
dispose();
364-
});
393+
});

0 commit comments

Comments
 (0)